【问题标题】:getting not-null constraint error in hibernate one to many mapping在休眠一对多映射中出现非空约束错误
【发布时间】:2017-03-22 23:16:10
【问题描述】:

所以我的用户有一个位置,例如:

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "location_id")
private Location location = new Location();

位置表有:

@OneToMany(mappedBy="location", cascade=CascadeType.ALL)
private Set<User> userSet = new HashSet<User>();

只是在用户表调用中运行一个简单的插入 我一直遇到这个错误:

Hibernate: insert into users (createdAt, email, firstName, gender, hashedPassword, lastName, location_id, type, updatedAt) values (?, ?, ?, ?, ?, ?, ?, ?, ?)
Mar 22, 2017 3:06:57 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 0, SQLState: 23502
Mar 22, 2017 3:06:57 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: ERROR: null value in column "location_id" violates not-null constraint
Detail: Failing row contains (1, 2017-03-22 15:06:53.832, ankitv@uci.edu, ankit, null, turende, verma, 3, null, null).
2017-03-22 15:06:57.822:WARN::/bemh/medhuddleapi/userInfo/insertUser
org.hibernate.exception.ConstraintViolationException: could not execute statement

请有任何建议..

【问题讨论】:

  • 可以通过显示 Location 的构造函数来改进问题,因为它是在显示的代码中直接调用的。 User.location 和 Location.userSet 的相关 getter 和 setter 也可能有所帮助。与 Location.id 属性上的注释相同。
  • stackoverflow.com/questions/42327971/… 也是相关的。那里的答案和 cmets 可能会有所帮助。

标签: hibernate


【解决方案1】:

尝试从 User 类中删除 Location 的实例化。 https://www.mkyong.com/hibernate/hibernate-one-to-many-relationship-example-annotation/ 似乎很接近,但没有对应的实例化。

或者,确认在数据库中创建的列具有您期望的名称。

【讨论】:

    猜你喜欢
    • 2012-06-14
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多