这些是我的实体
@Entity
public class User {
@ManyToMany(mappedBy="admins")
private Set<Game> adminForGames = new HashSet<Game>();
@Entity
public class Game {
@ManyToMany
@JoinTable(
name="Game_adminUsers",
joinColumns=@JoinColumn(name="Game_id"),
inverseJoinColumns=@JoinColumn(name="User_id")
)
private Set<User> adminUsers = new HashSet<User>();
这就是我创建新 Game
的方式:
Game game = new Game(index, name);
game.getAdminUsers().add(someUser);
em.persist(game);
如您所见,我没有更新 someUser
将新游戏添加到他的 adminForGames
,尽管根据 JPA 规范,这是我的责任。
不过,它工作得很好,这是合乎逻辑的,因为 User
实际上不需要写入记录(因为关系使用连接表)。
它是“偶然”工作的(我的实现是 Hibernate)还是我实际上做得正确?
最佳答案
我对 JPA 规范的理解是,用户有责任在内存中设置正确的关系。
对于数据库,设置关系的拥有方就足够了(这就是您所做的)。因此(从理论上讲)如果您仅设置非拥有方,它应该不起作用。
关于java - 我不会更新 JPA 关系的双方,但它有效。好的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7988817/