Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring和Hibernate错误--not null属性引用空值或瞬时值:com.tharaka.model.Employee.designation_Spring_Hibernate_Spring Mvc_Spring Security - Fatal编程技术网

Spring和Hibernate错误--not null属性引用空值或瞬时值:com.tharaka.model.Employee.designation

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

我是Spring和hibernate新手,在尝试持久化事务数据时遇到了上述错误。请设法解决这个问题 这是我的实体:

 @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模式?