0
我在帳戶和組之間有多對多的關係。組表的數據是預先填充的,並且沒有添加額外的組。休眠單向@ManyToMany
使用Hibernate,我的願望是:
- 新增帳戶後,帳戶表,
- 添加記錄到ACCOUNT_GROUP表,
- 不添加一條記錄到組表
在我看來,無論我做什麼,我總會在組表中找到重複記錄。這是我的問題。這裏是我的代碼:
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示例的問題和網站,但我一定會錯過一些東西。感謝您的閱讀和幫助。
爲什麼你有一個級聯合並和堅持,因爲你真的不想添加或更新一個新的組?刪除。然後發佈實際創建帳戶的代碼,並在保存之前向其添加組。 –
如果我沒有指定任何CascadeType,它會給我以下錯誤:'''在託管刷新過程中出現錯誤[org.hibernate.TransientObjectException:對象引用未保存的瞬態實例 - 在查詢刷新前保存瞬態實例'' –
我應該有前面提到的Jackson正在序列化來自前端的JSON響應,該響應成爲上面的newAccount變量。 JSON中的分組變量如下所示: '''groupings:[{name:「groupa」,groupType:「typea」}] –