[英]Hibernate OneToMany with JoinTable ID generation
有人可以在以下情況下幫助我在休眠中設置適當的注釋:
我有三個表:
帳戶,卡和AccountCard。
AccountCard正在加入表,用於“卡”和“帳戶”之間的OneToMany關系(一個帳戶有很多卡,卡僅附加到一個帳戶)。
我需要向“帳戶”列表卡屬性和“卡模型帳戶”帳戶屬性中添加。 這很容易。
問題是在保留帶有卡的帳戶時出現“無法將空值插入AccountCard.id”的問題。 另外,我需要使用序列來生成用於聯接表的ID,但不知道如何。
任何幫助將不勝感激。
這是Card中的代碼:
@ManyToOne(fetch = FetchType.LAZY)
@JoinTable(name = "account_card", joinColumns = @JoinColumn(name = "crd_id"), inverseJoinColumns = @JoinColumn(name = "acc_id"))
private Account account;
我不想在Account類中建立映射,因此未添加列表卡。
您是否嘗試過首先在數據庫中生成表(在我的情況下為mysql),然后使用諸如nebans之類的思想創建實體? mysql中的一個自動增量id列然后以:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "ID")
private Integer id;
請查看http://netbeans.org/kb/docs/javaee/ecommerce/entity-session.html ,以獲取有關如何使用netbeans從數據庫創建實體的示例。
在您的@JoinTable
批注中,我看到對account_name
表的引用,而不是AccountCard
引用。 某處實際上有一個AccountCard
表嗎?
聯接表通常不需要其自己的ID密鑰,如果您已休眠自動生成表DDL,它將不包含其中的一個。
如果確實在連接表上需要一個ID,我認為沒有任何方法或需要讓Hibernate知道它,但是您應該在SQL DDL中使列NOT NULL AUTO_INCREMENT
成為可能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.