1

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

我有三张桌子:

帐户、卡和帐户卡。

AccountCard 是卡和帐户之间的 OneToMany 关系的连接表(帐户有很多卡,卡只附加到一个帐户)。

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

问题是我在使用卡持久化帐户时收到“无法向 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 类中有一个映射,所以不会添加 List 卡。

4

2 回答 2

1

在您的@JoinTable注释中,我看到了对account_name表格的引用,而不是AccountCard. 真的有AccountCard桌子吗?

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

如果您确实需要连接表上的 id,我认为没有办法或需要让 hibernate 意识到它,但您应该NOT NULL AUTO_INCREMENT在 SQL DDL 中创建该列。

于 2013-02-26T12:20:14.163 回答
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 从数据库创建实体的示例

于 2013-02-26T11:25:05.477 回答