簡體   English   中英

帶有JoinTable ID生成的Hibernate OneToMany

[英]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.

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