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
Java Hibernate异常:x实例的标识符已更改_Java_Hibernate - Fatal编程技术网

Java Hibernate异常:x实例的标识符已更改

Java Hibernate异常:x实例的标识符已更改,java,hibernate,Java,Hibernate,这是我的测试代码: Employee emp = new Employee(); emp.setUsername("test"); emp.setPassword("test"); sf = new Configuration().configure().buildSessionFactory(); log.debug("SessionFactory created"); session = sf.

这是我的测试代码:

        Employee emp = new Employee();

        emp.setUsername("test");
        emp.setPassword("test");
        sf = new Configuration().configure().buildSessionFactory();
        log.debug("SessionFactory created");
        session = sf.openSession();
        Transaction tx = session.getTransaction();
        tx.begin();

        log.debug("Saving Employee");
        System.out.println(emp);
        session.save(emp);
        session.flush();

        if(!tx.wasCommitted())
        {
            tx.commit();
            log.debug("Employee saved");
        }
这是我的员工班

@Entity
@Table(name = "EMPLOYEES")
public class Employee 
{
@Id
@GenericGenerator(name="emp_id_sq", strategy="generator.EmployeeIdGenerator")
@GeneratedValue(generator="emp_id_sq")
@Column(name = "EMP_ID", unique = true, nullable = false)
private long id;

@Column(name = "USERNAME", unique = true, nullable = false)
private String username;

@Column(name = "PASSWORD", nullable = false)
private String password;

@OneToMany(mappedBy = "employee")
private Collection<Timecard> timecards;
@实体
@表(name=“EMPLOYEES”)
公营雇员
{
@身份证
@GenericGenerator(name=“emp\u id\u sq”,strategy=“generator.EmployeeIdGenerator”)
@生成值(generator=“emp_id_sq”)
@列(name=“EMP_ID”,unique=true,nullable=false)
私人长id;
@列(name=“USERNAME”,unique=true,nullable=false)
私有字符串用户名;
@列(name=“PASSWORD”,null=false)
私有字符串密码;
@OneToMany(mappedBy=“employee”)
私人收集时间卡;
我收到的错误:org.hibernate.HibernateException:模型实例的标识符。员工已从24更改为24


我不知道为什么会出现错误,但当我尝试提交保存时会发生这种情况。

尝试删除flush()并仅提交()。可能flush()生成新的@Id并提交()抛出错误。Mmm尝试将
type
属性放入注释中,您有相同的问题提示您还应该启用SQL日志记录:sf.setProperty(“hibernate.show_sql”,“true”);我猜问题是由这个未知的EmployeeIdGenerator引起的。它不喜欢我的
@GenericGenerator(name=“emp_id_sq”,strategy=“generator.EmployeeIdGenerator”)
,我将它删除并使用
@GeneratedValue(strategy=GenerationType.AUTO)
,它工作得很好。