我没有更新JPA关系的双方,但它有效。好?

时间:2011-11-02 23:56:46

标签: 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)还是我实际上正确地做了这个?

2 个答案:

答案 0 :(得分:1)

我对JPA规范的理解是,用户有责任在内存中设置正确的关系

对于数据库,设置关系的拥有方就足够了(这就是你所做的)。所以(从理论上说)如果你只设置非拥有方那就不行。

答案 1 :(得分:0)

这不是“机会”。这就是JPA的工作方式。