Hibernate JPA@ManyToMany关系、@JoinTable和@JoinColumn@OrderBy 表A 身份证 分类 表B 身份证

Hibernate JPA@ManyToMany关系、@JoinTable和@JoinColumn@OrderBy 表A 身份证 分类 表B 身份证,hibernate,jpa,sql-order-by,jointable,joincolumn,Hibernate,Jpa,Sql Order By,Jointable,Joincolumn,有一个REF表,它使用了许多相关的表 表(参考) 身份证 B_ID 我使用B.getAs()获取数据 我想获取As OrderBy TABLE_排序字段。为此,我尝试添加OrderBy,但它无法访问与B neighter A相关的ORDER字段 这就是为什么,我认为若我可以将SORT字段连接到REF表,我可以在B的关系映射中使用@OrderBy(clause=“ORDER”)参数 但是好几个小时我找不到任何解决办法 以下是我用于映射的代码: 表A: @ManyToMany(fetch=Fet

有一个REF表,它使用了许多相关的表

表(参考)
  • 身份证
  • B_ID
我使用B.getAs()获取数据

我想获取As OrderBy TABLE_排序字段。为此,我尝试添加OrderBy,但它无法访问与B neighter A相关的ORDER字段

这就是为什么,我认为若我可以将SORT字段连接到REF表,我可以在B的关系映射中使用@OrderBy(clause=“ORDER”)参数

但是好几个小时我找不到任何解决办法

以下是我用于映射的代码:

表A:

@ManyToMany(fetch=FetchType.EAGER, targetEntity = Role.class, cascade={CascadeType.MERGE, CascadeType.PERSIST})
@Fetch(FetchMode.SUBSELECT)
@JoinTable(name = "NC_ADMIN_ROLE_PAGE_XREF", joinColumns =
        @JoinColumn(name = "PAGE_ID", referencedColumnName = "ID"), 
    inverseJoinColumns = @JoinColumn(name = "ROLE_ID", referencedColumnName = "ID", nullable = true))
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region="ncAdminElements")
@BatchSize(size = 50)
private List<Role> allRoles = new ArrayList<Role>(10);
@ManyToMany(fetch=FetchType.EAGER,targetEntity=Role.class,cascade={CascadeType.MERGE,CascadeType.PERSIST})
@Fetch(FetchMode.SUBSELECT)
@JoinTable(name=“NC\u ADMIN\u ROLE\u PAGE\u XREF”,JointColumns=
@JoinColumn(name=“PAGE\u ID”,referencedColumnName=“ID”),
inverseJoinColumns=@JoinColumn(name=“ROLE\u ID”,referencedColumnName=“ID”,nullable=true))
@缓存(用法=cacheconcurrentystrategy.READ\u WRITE,region=“ncAdminElements”)
@批量大小(大小=50)
私有列表allRoles=newarraylist(10);
表B:

@Column(name = "NAME")
private String name;
@ManyToMany(fetch=FetchType.EAGER, targetEntity = Page.class, cascade={CascadeType.MERGE, CascadeType.PERSIST})
@Fetch(FetchMode.SUBSELECT)
@JoinTable(name = "NC_ADMIN_ROLE_PAGE_XREF", joinColumns = @JoinColumn(name = "ROLE_ID", referencedColumnName = "ID"), 
    inverseJoinColumns = @JoinColumn(name = "PAGE_ID", referencedColumnName = "ID", nullable = true))
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region="ncAdminElements")
@BatchSize(size = 50)
private List<Page> allPages = new ArrayList<Page>(10);
@列(name=“name”)
私有字符串名称;
@ManyToMany(fetch=FetchType.EAGER,targetEntity=Page.class,cascade={CascadeType.MERGE,CascadeType.PERSIST})
@Fetch(FetchMode.SUBSELECT)
@JoinTable(name=“NC\u ADMIN\u ROLE\u PAGE\u XREF”,joinColumns=@JoinColumn(name=“ROLE\u ID”,referencedColumnName=“ID”),
inverseJoinColumns=@JoinColumn(name=“PAGE\u ID”,referencedColumnName=“ID”,nullable=true))
@缓存(用法=cacheconcurrentystrategy.READ\u WRITE,region=“ncAdminElements”)
@批量大小(大小=50)
私有列表所有页面=新的ArrayList(10);
我真正想要的是,TABLE_B.getAllPages()按TABLE_A.DISPLAY_顺序排序


关于hibernate for dummies中映射关系的任何好的源代码都适合我

恐怕你不能这样做。看@kirlisakal你找到解决办法了吗?对不起,已经很久了,甚至我都不记得了,因为我不再在那个项目工作了。