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)
,它工作得很好。