@Test
public void test() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
EntityManager em = factory.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
Student s = new Student();
s.setSname("张飞");
s.setSage(21);
em.persist(s);
/*
javax.persistence.PersistenceException:
org.hibernate.id.IdentifierGenerationException:
ids for this class must be manually assigned before calling save(): cn.wm.domain.Student
*/
tx.commit();
em.close();
factory.close();
}
@Entity
public class Student {
@Id // 没有添加@GeneratedValue注解,即手动设置主键
private Long sid;
private String sname;
private Integer sage;
public Long getSid() {
return sid;
}
public void setSid(Long sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public Integer getSage() {
return sage;
}
public void setSage(Integer sage) {
this.sage = sage;
}
@Override
public String toString() {
return "Student{" +
"sid=" + sid +
", sname=‘" + sname + ‘\‘‘ +
", sage=" + sage +
‘}‘;
}
}
@Test
public void test() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
EntityManager em = factory.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
Student s = new Student();
s.setSid(1L);
s.setSname("曹操");
s.setSage(26);
em.persist(s);
/*
javax.persistence.PersistenceException:
org.hibernate.PersistentObjectException:
detached entity passed to persist: cn.wm.domain.Student
*/
tx.commit();
em.close();
factory.close();
}
@Entity
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // 设置主键生成策略设置为自动生成
private Long sid;
private String sname;
private Integer sage;
public Long getSid() {
return sid;
}
public void setSid(Long sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public Integer getSage() {
return sage;
}
public void setSage(Integer sage) {
this.sage = sage;
}
}
JPA EntityManager.persist方法抛异常的原因
原文:https://www.cnblogs.com/wumingoo1/p/13398508.html