java - 我不会更新 JPA 关系的双方,但它有效。好的?

标签 java hibernate jpa entity-relationship

这些是我的实体

@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/

相关文章:

java - 如何使构造函数的排序更加有效?

java - Android java.net.SocketException : socket failed: EACCES (Permission denied) while inserting value into sql server through Web service

java - Spring 状态机 JPA 持久化

java - 如何使用android中照片库 GridView 中的复选框获取选中图片的路径

java - 验证输入并将其发送到文本文档

java - JPQL 和 ON 子句基本子查询

java - 如何使用 hibernate 查询和 struts 获取分页中的记录

java - JPA/Hibernate : @ManyToOne and @OneToOne relationships tagged as FetchType. LAZY 和 optional = false 不在 em.find() 上延迟加载?

eclipse - 如何禁用 Hibernate 泛洪日志

java - 在 Eclipse JPA 项目中获取 UnsupportedClassVersionError 这是没有意义的