如何实现多对多关系的sort_order

时间:2018-11-21 17:19:46

标签: java database spring hibernate

我有一门课程涉及模块多对多关系,一门课程可以包含任意数量的模块,而模块可以位于任意数量的课程中:

表格

课程

id 名称

rel_course_to_module

course_id module_id

模块

id 名称

如何实现课程特定的模块sort_odering,以便一个课程中的一个模块首先出现,而另一课程中的最后出现?我在Hibernate中使用Spring JPA,

1 个答案:

答案 0 :(得分:0)

您可以使用休眠模式来刷新数据jpa。

您可以遵循以下文档:spring data jpa。课程和模块实体的关系将是多对多关系。

您可以在此处为存储库创建一个接口,并从此接口中按courseId查找模块

您的代码将是这样

const GET_PROFILE = gql`
  query GetProfileQuery($profileId: ID!) {
    getProfileInfo(profileId: $profileId) {
      name
    }
  }
`;

const ADD_ENDORSEMENT = gql`
  mutation AddEndorsement($profileId: ID!, $body: String!) {
    addEndorsement(profileId: $profileId, body: $body) {
      endorsementId
    }
  }
`;

const Profile = props => {
  const profileId = props.match.params.profileId;
  return (
    <Query query={GET_PROFILE} variables={{ profileId: profileId }}>
      {({ loading, error, data }) => {
        if (loading) return <p>Loading...</p>;
        if (error) return <p>Error :(</p>;
        return (
          <Fragment>
            <h1>Welcome {data.getProfileInfo.name}</h1>
            <Mutation mutation={ADD_ENDORSEMENT}>
              {(addEndorsement, { loading, error }) => (
                <div>
                  <button
                    onClick={e => {
                      addEndorsement({
                        variables: {
                          profileId: profileId,
                          body: "This is a test."
                        }
                      });
                    }}
                  >
                    Save
                  </button>
                  {loading && <p>Loading...</p>}
                  {error && <p>Error :(</p>}
                </div>
              )}
            </Mutation>
          </Fragment>
        );
      }}
    </Query>
  );
};

您必须在课程实体内部声明列出模块。这是一个像您的问题一样的好例子。

在最后一部分,您要问的是:您可以为映射表创建一个优先级列,并实现所需的业务逻辑。