Java 在JPA中使用中间表进行联接(需要按中间表的一列对最终结果进行排序)
我能够使用如下代码所示的中间表执行jointable: 下面是一个故事的关键词 在Story.java中Java 在JPA中使用中间表进行联接(需要按中间表的一列对最终结果进行排序),java,hibernate,jpa,joincolumn,Java,Hibernate,Jpa,Joincolumn,我能够使用如下代码所示的中间表执行jointable: 下面是一个故事的关键词 在Story.java中 @ManyToMany(targetEntity=Keyword.class, cascade={CascadeType.ALL, CascadeType.MERGE}, fetch = FetchType.LAZY ) @JoinTable(name="STORY_KEYWORDS", joinColumns={@Jo
@ManyToMany(targetEntity=Keyword.class,
cascade={CascadeType.ALL, CascadeType.MERGE},
fetch = FetchType.LAZY )
@JoinTable(name="STORY_KEYWORDS",
joinColumns={@JoinColumn(name="STORY_ID")},
inverseJoinColumns={@JoinColumn(name="KEYWORD_ID")}
)
private Set<Keyword> keywords = new HashSet<Keyword>(0)
@ManyToMany(mappedBy="keywords")
private Set<Story> stories = new HashSet<Story>(0);
@ManyToMany(targetEntity=Keyword.class,
cascade={CascadeType.ALL,CascadeType.MERGE},
fetch=FetchType.LAZY)
@JoinTable(name=“STORY\u关键字”,
joinColumns={@JoinColumn(name=“STORY_ID”)},
inverseJoinColumns={@JoinColumn(name=“KEYWORD_ID”)}
)
私有集关键字=新哈希集(0)
在Keyword.java中
@ManyToMany(targetEntity=Keyword.class,
cascade={CascadeType.ALL, CascadeType.MERGE},
fetch = FetchType.LAZY )
@JoinTable(name="STORY_KEYWORDS",
joinColumns={@JoinColumn(name="STORY_ID")},
inverseJoinColumns={@JoinColumn(name="KEYWORD_ID")}
)
private Set<Keyword> keywords = new HashSet<Keyword>(0)
@ManyToMany(mappedBy="keywords")
private Set<Story> stories = new HashSet<Story>(0);
@ManyToMany(mappedBy=“关键字”)
私有集故事=新哈希集(0);
这些表是故事
、关键字
和故事_关键字
。
现在我希望关键字按照story_关键字表(中间表)的“权重”列进行排序。
请帮忙
提前感谢。我重新格式化了您的代码,使其更易于理解,但老实说,仍然无法理解您的要求。什么是
Weight
列?您所说的按重量列存储是什么意思?得到的错误是什么?权重列是中间表中的一列(story_关键字)。在这里,我执行Story和Story_关键字表的连接,以获取一个故事的关键字(关键字是表中的一个)。这些关键字的顺序是分散的。现在,我在Story_关键字表(中间表)中添加了一列“Weight”,并希望根据Weight列提取关键字。我在谷歌上搜索了很多次,但没有找到任何注释,允许我指定中间表的orderby条件。如果中间列除了外键列之外还有一列,并且您需要该列,那么您还必须将该表映射到Hibernate实体。感谢Ean,我为此创建了一个实体。然而,我却被困在了另一个地方。中间表有一个复合键,我需要用它执行连接。你能提出建议吗?请把你一直坚持的代码贴出来。