java – Null外键,在ManyToOne关系中使用hibernate [4.1.1]注释
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Null外键,在ManyToOne关系中使用hibernate [4.1.1]注释,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1532字,纯文字阅读大概需要3分钟。
内容图文
![java – Null外键,在ManyToOne关系中使用hibernate [4.1.1]注释](/upload/InfoBanner/zyjiaocheng/748/6d5b110c102749a59fa733223bcc8f64.jpg)
我试图使用Hibernate 4.1.1保持一对多和多对一的关系,但外键始终为NULL.
有两个实体:帐户和客户.客户可以有多个账户,而账户只有一个客户.
这是课程(只有重要的):
Account.java
@Entity
@Table(name = "account")
public class Account implements Serializable {
private Client client;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
public long getId() {
return id;
}
@ManyToOne
@JoinColumn(name = "id_client")
public Client getClient() {
return client;
}
}
Client.java
@Entity
@Table(name = "client")
public class Client implements Serializable {
private List<Account> accounts;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
public long getId() {
return id;
}
@OneToMany(mappedBy = "client", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
public List<Account> getAccounts() {
return accounts;
}
}
Test.java
session.beginTransaction();
Client client = new Client();
Account account1 = new Account();
Account account2 = new Account();
a.addAccount(account1);
a.addAccount(account2);
session.save(client);
session.getTransaction().commit();
在运行时,Hibernate将外键添加到表中:
Hibernate:alter table account添加索引FKB9D38A2D3B988D48(id_client),添加约束FKB9D38A2D3B988D48外键(id_client)引用client(id)
两个帐户都有id_client列NULL.
我尝试在@JoinColumn关系中放置nullable = false,但这只是调用了一个异常.
线程“main”中的异常org.hibernate.exception.ConstraintViolationException:列’id_client’不能为null
解决方法:
弄清楚了.我忘了将客户端添加到帐户中.
account1.setClient(client);
account2.setClient(client);
现在它有效.感谢您的小费.
内容总结
以上是互联网集市为您收集整理的java – Null外键,在ManyToOne关系中使用hibernate [4.1.1]注释全部内容,希望文章能够帮你解决java – Null外键,在ManyToOne关系中使用hibernate [4.1.1]注释所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。