gpt4 book ai didi

java - Hibernate 单向@ManyToMany

转载 作者:行者123 更新时间:2023-12-02 13:02:06 25 4
gpt4 key购买 nike

我的帐户和组之间存在多对多关系。组表的数据已预先填充,无需添加其他组。

使用 Hibernate,我的愿望是:

  1. 将帐户添加到帐户表,
  2. 向 account_group 表添加一条记录,并且
  3. 向组表中添加记录

在我看来,无论我做什么,我总是在组表中得到重复的记录。这是我的问题。这是我的代码:

Account.java

@Entity
@Table(name = "account", schema = "admin")
public class Account {

@Id
@GeneratedValue
private UUID id;

...

@ManyToMany(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
@JoinTable(name = "account_grouping", schema = "admin", joinColumns = @JoinColumn(name = "account_id"), inverseJoinColumns = @JoinColumn(name = "grouping_id"))
private Set<Grouping> groupings;

...

// getters and setters

}

Grouping.java

@Entity
@Table(name = "grouping", schema = "admin")
public class Grouping {

...

@Id
@GeneratedValue
private UUID id;

...

// getters and setters

}

AccountDao.java

@Repository
public class AccountDao extends AbstractJpaDao<Account, String> {

...

@Transactional
public boolean create(Account newAccount) {
try {
getEntityManager().merge(newAccount);
return true;
} catch(Exception e) {
System.out.println("Danger, Will Robinson!: " + e);
return false;
}
}

}

我查找了许多有关 Hibernate @ManyToMany 示例的问题和网站,但我一定错过了一些东西。感谢您的阅读和帮助。

最佳答案

不幸的是,我没有足够的代表来发表评论,所以我将给出我的猜测作为答案。在保存实体之前为您的帐户选择组时,请确保组实体具有 ID。否则,Group实体将被视为一个新的Object,并将被保存到分组表中。

关于java - Hibernate 单向@ManyToMany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44248563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com