java – Hibernate不会保存具有ManyToOne关系的实体
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Hibernate不会保存具有ManyToOne关系的实体,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1885字,纯文字阅读大概需要3分钟。
内容图文
![java – Hibernate不会保存具有ManyToOne关系的实体](/upload/InfoBanner/zyjiaocheng/785/5f89a60efab64a138bc43c9afd383a9e.jpg)
这是我的表:
CREATE TABLE `admin_log` (
`LOG_ID` bigint(20) NOT NULL AUTO_INCREMENT,
`USER_ID` bigint(20) NOT NULL,
`CREATION_DATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`ACTION` varchar(100) NOT NULL,
`DETAILS` varchar(100) DEFAULT NULL,
PRIMARY KEY (`LOG_ID`),
KEY `ADMIN_LOG_FK1` (`USER_ID`),
CONSTRAINT `ADMIN_LOG_FK1` FOREIGN KEY (`USER_ID`) REFERENCES `user_master` (`USER_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
这是我的实体:
@Entity
@Table ( name = "admin_log" )
public class AdminLog {
private Long logId;
private UserMaster user;
...
@Id
@GeneratedValue ( strategy = IDENTITY )
@Column ( name = "LOG_ID", unique = true, nullable = false, length = 20 )
public Long getLogId () {
return logId;
}
public void setLogId ( Long logId ) {
this.logId = logId;
}
@ManyToOne
@JoinColumn ( name = "USER_ID" )
public UserMaster getUser () {
return user;
}
public void setUser ( UserMaster user ) {
this.user = user;
}
...
}
@Entity
@Table ( name = "user_master" )
public class UserMaster {
private Long userId;
...
@Id
@GeneratedValue ( strategy = IDENTITY )
@Column ( name = "USER_ID", unique = true, nullable = false, length = 20 )
public Long getUserId () {
return this.userId;
}
public void setUserId ( Long userId ) {
this.userId = userId;
}
...
}
当我尝试使用HibernateTemplate中的save()方法保存AdminLog时,我收到以下错误:
SEVERE: Column 'USER_ID' cannot be null
org.springframework.dao.DataIntegrityViolationException: could not insert [...AdminLog];
SQL [insert into admin_log (ACTION, CREATION_DATE, DETAILS, USER_ID) values (?, ?, ?, ?)];
constraint [null] nested exception is org.hibernate.exception.ConstraintViolationException: could not insert: [...AdminLog]
问题是userId绝对不是null!这就像Hibernate无法从AdminLog中的用户属性中检索userId.我究竟做错了什么?
解决方法:
您正在尝试保存UserMaster的瞬态实例.如果你有对象的id,那么你应该先加载它并在保存之前设置为AdminLog对象.
内容总结
以上是互联网集市为您收集整理的java – Hibernate不会保存具有ManyToOne关系的实体全部内容,希望文章能够帮你解决java – Hibernate不会保存具有ManyToOne关系的实体所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。