我正在使用JPA/EclipseLink 2.5.2,並且想要爲我的ManyToMany映射添加附加的where子句。 SQL代碼是這樣的:JPA ManyToMany註釋
SELECT * FROM Friends f
INNER JOIN User u ON f.friend_id = u.id
WHERE f.verified=1;
所以我設法做的JoinMapping:
@Entity
@NamedQueries({
@NamedQuery(name="User.findAll", query="SELECT u FROM User u"),
@NamedQuery(name="User.login", query="SELECT a FROM User a WHERE a.username = :name and a.password = :password"),
@NamedQuery(name="User.findId", query="SELECT a FROM User a WHERE a.id = :id"),
@NamedQuery(name="User.findName", query="SELECT a FROM User a WHERE a.username = :name")
})
public class User implements Serializable {
...
@ManyToMany
@JoinTable(
name="Friends"
, joinColumns={
@JoinColumn(name="user_id")
}
, inverseJoinColumns={
@JoinColumn(name="friend_id")
}
)
List<User> friends;
}
但我不知道如何添加WHERE f.verified=1
這又如何實現?
由於提前, 卡西迪
你只定義的表之間的連接。但是,你如何檢索實體?你使用NamedQuery或CriteriaQuery? – 2014-12-10 21:49:52
可能dup http://stackoverflow.com/questions/8582452/jpa-manytomany-how-can-jointable-have-a-property – 2014-12-10 21:50:40
我通過NamedQuery和ManyToMany映射檢索的一個用戶我想檢索列表包含來自JoinTable「朋友」的所有朋友的朋友,其中「Friends.verified = 1」 –
Allstar
2014-12-10 22:09:53