首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JoinTable ID生成的Hibernate OneToMany

问使用JoinTable ID生成的Hibernate OneToMany
EN

Stack Overflow用户
提问于 2013-02-26 19:19:48
回答 2查看 1.4K关注 0票数 1

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

我有三张表:

帐户、卡和AccountCard。

AccountCard是卡和账号之间OneToMany关系的联结表(账号有多张卡,卡只附在一个账号上)。

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

问题是,我得到“无法插入空值到AccountCard.id”,而持久化帐户与卡。此外,我需要使用序列来生成用于连接表的ID,但不知道如何生成。

任何帮助都将不胜感激。

以下是Card中的代码:

代码语言:javascript
复制
@ManyToOne(fetch = FetchType.LAZY)
@JoinTable(name = "account_card", joinColumns = @JoinColumn(name = "crd_id"), inverseJoinColumns = @JoinColumn(name = "acc_id"))
private Account account;

我不想在Account类中有一个映射,所以没有添加列表卡。

EN

回答 2

Stack Overflow用户

发布于 2013-02-26 20:20:14

在@JoinTable注释中,我看到了对account_name表的引用,而不是对AccountCard的引用。在某个地方真的有AccountCard表吗?

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

如果您确实需要连接表上的id,我不认为有办法或需要让hibernate知道这一点,但您应该在SQL中将列设置为NOT NULL AUTO_INCREMENT。

票数 1
EN

Stack Overflow用户

发布于 2013-02-26 19:25:05

您是否尝试首先在数据库(在我的例子中是mysql)中生成表,然后使用ide创建实体(如nebans )?然后,mysql中的自动增量id列将以:

代码语言:javascript
复制
@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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15087744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档