具有JoinTable ID生成的Hibernate OneToMany

时间:2013-02-26 11:19:48

标签: java hibernate hibernate-annotations

有人可以帮助我在hibernate中为以下情况设置适当的注释:

我有三张桌子:

账户,卡和账户卡。

AccountCard正在加入卡与账户之间的OneToMany关系表(账户有很多卡,卡只附加到一个账户)。

我需要添加到帐户列表卡属性和卡模型帐户帐户属性。这很容易。

问题是我在持有Account with Cards时遇到“无法将空值插入AccountCard.id”。 此外,我需要使用序列生成用于连接表的ID,但不知道如何。

非常感谢任何帮助。

以下是卡片中的代码:

@ManyToOne(fetch = FetchType.LAZY)
@JoinTable(name = "account_card", joinColumns = @JoinColumn(name = "crd_id"), inverseJoinColumns = @JoinColumn(name = "acc_id"))
private Account account;

我不希望在Account类中有映射,因此不会添加列表卡。

2 个答案:

答案 0 :(得分:0)

您是否尝试首先在数据库中生成表(在我的情况下是mysql),然后使用像nebans这样的ide创建实体?然后,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从数据库创建实体的示例

答案 1 :(得分:0)

@JoinTable注释中,我看到对account_name表的引用,而不是AccountCard。某处有AccountCard表吗?

连接表通常不需要自己的id键,如果你有hibernate自动生成你的表DDL,它将不包含一个。

如果你确实需要在连接表上使用id,我认为没有办法或者需要让hibernate知道它,但是你应该在SQL DDL中创建列NOT NULL AUTO_INCREMENT。 / p>