簡體   English   中英

JPA 沒有為多對多關系創建數據庫條目

[英]JPA not creating database entry for many to many relationship

我有這兩個類(縮短):

@Entity
public class ClanPlayer {
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    private int id;
    @ManyToMany(mappedBy = "players")
    private List<PhoenixPermission> permissions = new ArrayList<>();

    public ClanPlayer() {}

    public List<PhoenixPermission> getPermissions() {
        return permissions;
    }

    public void setPermissions(List<PhoenixPermission> permissions) {
        this.permissions = permissions;
    }

    public void addPermission(PhoenixPermission permission) {
        EntityManager em = EMUtils.getEntityManager();
        em.getTransaction().begin();
        permissions.add(permission);
        em.getTransaction().commit();
    }
}

@Entity
public class PhoenixPermission {
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    private int id;
    @ManyToMany
    @JoinTable(name = "PLAYER_PERMISSION")
    private List<ClanPlayer> players = new ArrayList<>();

    public PhoenixPermission() {}

    public List<ClanPlayer> getPlayers() {
        return players;
    }

    public void setPlayers(List<ClanPlayer> players) {
        this.players = players;
    }
}

現在,在使用 PhoenixPermission-Entity object 調用addPermission方法時,更新了 ArrayList 的“權限”,但“PLAYER_PERMISSION”表的數據庫中沒有新的元組。

調試日志不顯示此表的任何插入查詢。 所有其他實體管理器操作都工作正常。 我認為我的注釋有問題,但我不確定。 有任何想法嗎?

找到了。 我只需要更新這兩個對象。 這是更新后的addPermission方法:

public void addPermission(PhoenixPermission permission) {
    EntityManager em = EMUtils.getEntityManager();
    em.getTransaction().begin();
    permissions.add(permission);
    permission.getPlayers().add(this);
    em.getTransaction().commit();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM