Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/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
Hibernate 由以下原因引起的异常:java.sql.SQLException:一般错误,来自服务器的消息:";字段';empid&x27;不';“没有默认值”;_Hibernate - Fatal编程技术网

Hibernate 由以下原因引起的异常:java.sql.SQLException:一般错误,来自服务器的消息:";字段';empid&x27;不';“没有默认值”;

Hibernate 由以下原因引起的异常:java.sql.SQLException:一般错误,来自服务器的消息:";字段';empid&x27;不';“没有默认值”;,hibernate,Hibernate,我的模型课: package com.igate.model; import java.util.Date; //import java.sql.Date; import java.sql.Timestamp; import javax.persistence.Column; import javax.persistence.Entity; import javax.persist

我的模型课:

        package com.igate.model;

        import java.util.Date;
        //import java.sql.Date;
        import java.sql.Timestamp;

        import javax.persistence.Column;
        import javax.persistence.Entity;
        import javax.persistence.GeneratedValue;
        import javax.persistence.GenerationType;
        import javax.persistence.Id;
        import javax.persistence.Table;

        @Entity
        @Table(name="Employee")
        public class Employee
        {
            @Id
            @Column(name="empid")
            @GeneratedValue(strategy=GenerationType.IDENTITY)
            int         id;

            @Column(name="empname")
            String      name;

            String      job;
            Date        hiredate;
            int         sal;
            int         deptid;
            public int getId() {
                return id;
            }
            public void setId(int id) {
                this.id = id;
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            public String getJob() {
                return job;
            }
            public void setJob(String job) {
                this.job = job;
            }
            public Date getHiredate() {
                return hiredate;
            }
            public void setHiredate(Date hiredate) {
                this.hiredate = hiredate;
            }
            public int getSal() {
                return sal;
            }
            public void setSal(int sal) {
                this.sal = sal;
            }
            public int getDeptid() {
                return deptid;
            }
            public void setDeptid(int deptid) {
                this.deptid = deptid;
            }
            public void setHiredate(Timestamp hiredate) {
                this.hiredate = hiredate;
            }

        }
我的cfg文件:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-configuration SYSTEM 
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

    <hibernate-configuration>
        <session-factory>
            <!--connection properties  -->
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
            <property name="connection.username">root</property>
            <property name="connection.password">MenhiBaba</property>

            <!--hibernate properties  -->
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="hb2ddl.auto">validate</property>
            <property name="show_sql">true</property>
            <!-- <property name="use_sql_comments">true</property>
            <property name="format_sql">true</property>
             -->
            <!-- Resource mapping -->
            <mapping class="com.igate.model.Employee"/>
        </session-factory>
    </hibernate-configuration>
主要方法:

import java.sql.Date;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.igate.model.Employee;
import com.igate.utils.HibernateUtils;


public class Test 
{
    public static void main(String[] args) {
        Session session =null;
        Transaction txn = null;
        try
        {
            session = HibernateUtils.getSessionFactory().openSession();
            txn = session.beginTransaction();
            txn.begin();
            Employee emp = new Employee();
            emp.setId(101);
            emp.setName("Rahim");
            emp.setJob("PO");
            emp.setHiredate(new Date(24-11-2011));
            emp.setSal(5500);
            emp.setDeptid(20);
            int i=(Integer)session.save(emp);
            if(i>=0)
                System.out.println("data saved");
            else
                System.out.println("data not saved");
            txn.commit();
            session.close();
        }catch(Exception e)
        {
            System.out.println("problem in creating session object");
            throw new ExceptionInInitializerError(e);
        }
    }
}
在此之前,我执行了许多程序,但我没有遇到任何问题。但我不知道我的代码有什么问题。我花了2个小时在这个简单的程序上。请问有人能帮我吗


提前谢谢

如果希望自动分配自动递增字段,请将其设置为NULL或0。有关更多详细信息,请参见

为什么要使用
emp.setId(101)为自动生成的字段赋值?在创建关联表时,您似乎忘记在MySQL中添加
自动增量
。因此,
@GeneratedValue(strategy=GenerationType.IDENTITY)
不会自动生成密钥。如果我们不在本例中使用,Hibernate将自动创建密钥。我分配了emp.setId(101)如果前端使用了
@GeneratedValue(strategy=GenerationType.IDENTITY)
,则后端需要一个自动生成的主键
创建表Employee(id int(11)unsigned not NULL auto_INCREMENT…
。但是,如果您不需要自动生成的密钥,则将其放在两侧-Hibernate和MySQL,并手动分配一个
id
,如
emp.setId(101),当要持久化与该表中的行对应的实体时。
import java.sql.Date;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.igate.model.Employee;
import com.igate.utils.HibernateUtils;


public class Test 
{
    public static void main(String[] args) {
        Session session =null;
        Transaction txn = null;
        try
        {
            session = HibernateUtils.getSessionFactory().openSession();
            txn = session.beginTransaction();
            txn.begin();
            Employee emp = new Employee();
            emp.setId(101);
            emp.setName("Rahim");
            emp.setJob("PO");
            emp.setHiredate(new Date(24-11-2011));
            emp.setSal(5500);
            emp.setDeptid(20);
            int i=(Integer)session.save(emp);
            if(i>=0)
                System.out.println("data saved");
            else
                System.out.println("data not saved");
            txn.commit();
            session.close();
        }catch(Exception e)
        {
            System.out.println("problem in creating session object");
            throw new ExceptionInInitializerError(e);
        }
    }
}