Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JPA中使用中间表进行联接(需要按中间表的一列对最终结果进行排序)_Java_Hibernate_Jpa_Joincolumn - Fatal编程技术网

Java 在JPA中使用中间表进行联接(需要按中间表的一列对最终结果进行排序)

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

我能够使用如下代码所示的中间表执行jointable: 下面是一个故事的关键词

在Story.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(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,我为此创建了一个实体。然而,我却被困在了另一个地方。中间表有一个复合键,我需要用它执行连接。你能提出建议吗?请把你一直坚持的代码贴出来。