Spring和Hibernate错误--not null属性引用空值或瞬时值:com.tharaka.model.Employee.designation
我是Spring和hibernate新手,在尝试持久化事务数据时遇到了上述错误。请设法解决这个问题 这是我的实体:Spring和Hibernate错误--not null属性引用空值或瞬时值:com.tharaka.model.Employee.designation,spring,hibernate,spring-mvc,spring-security,Spring,Hibernate,Spring Mvc,Spring Security,我是Spring和hibernate新手,在尝试持久化事务数据时遇到了上述错误。请设法解决这个问题 这是我的实体: @Entity @NamedQuery(name="Employee.findAll", query="SELECT e FROM Employee e") public class Employee implements Serializable{ private static final long serialVersionUID
@Entity @NamedQuery(name="Employee.findAll", query="SELECT e FROM Employee e")
public class Employee implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String city;
private String civil;
@Temporal(TemporalType.DATE)
@Column(name="dob", length=11)
private Date dob;
private String email;
private int epf;
private String fname;
private String gender;
private int landtp;
private String lname;
@Temporal(TemporalType.DATE)
@Column(name="salaryincrement", length=11)
//bi-directional many-to-one association to Designation
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="designation_id", nullable=false)
private Designation designation;
public Employee() { }
@Entity
@NamedQuery(name="Designation.findAll", query="SELECT d FROM Designation d")
public class Designation implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String type;
//bi-directional many-to-one association to Employee
@OneToMany(mappedBy="designation")//, cascade=CascadeType.ALL
private List<Employee> employees;
public Designation() {
}
这是我的实体类,
实体有一个getters和setters名称设置为nullable=false。但是,employees变量未在指定中初始化。因此,您必须初始化为
@OneToMany(mappedBy="designation")//, cascade=CascadeType.ALL
private List<Employee> employees = new LinkedList<>();
我不确定您是否可以使用原语类型int作为Id—您可能应该使用Integer—因为int具有默认的零值并且不能为null,所以您的新记录可以被视为Id为零的分离实体,而不是临时实体 同样的错误也发生在指定类中
请参见亲爱的先生,我已尝试过,但代码中仍有相同的错误,请给我另一种方法..更改id部分,并请发布正在保存实体的实际代码。员工和指定之间的关系不是级联关系-您是否引用了员工未保存的指定?如果关系是级联关系,您可能应该使用级联={CascadeType.PERSIST,…},否则不应该使用。从设计的角度来看,不应层叠指定,因为多个员工可以拥有相同的指定,因此您应该在会话中使用单独的保存/持久化调用来保存指定,使用员工实体创建指定似乎不是很好。选择“查询工作”,它将在视图中生成员工详细信息,但是inset不起作用,先生,我的代码中仍然有相同的错误,对不对?我的映射注释?请尝试删除@JoinColumnname=designation\u id中的nullable=false,nullable=false。毕竟,它也可以在应用程序级别而不是数据库级别处理。是的,它可以工作,但另一个错误变得严重:路径为[/CEB]的上下文中的Servlet.service for Servlet[spring]抛出异常[请求处理失败;嵌套异常为org.hibernate.exception.ConstraintViolationException:无法插入:[com.tharaka.model.Employee]]对于根原因com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:Column'designation\u id'不能为空,您可以问另一个问题,并提供更多详细信息。此外,您的实体定义相当混乱,因为您的@temporaltype.DATE用于指定您确定您的designation\u id列在数据中是自动递增的吗ase模式?