我的應用程序我已經使用JPA與Hibernate供應商和Oracle 11G數據庫。JPA:@SequenceGenerator不生成序列
這裏我使用的是原生查詢作爲跟隨我MST_EMP表..
Query query = this.entityManager.createNativeQuery("INSERT INTO MST_EMP emp (" +
"EMP_NAME,EMP_MAIL_ID) VALUES ('dasdas',?)");
query.setParameter(1,"dhrumil");
query.executeUpdate();
這裏是我的MST_EMP實體詳情..
@Table(name = "MST_EMP")
public class MstEmp implements Serializable, IsEntity {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "EMP_CODE")
@SequenceGenerator(name = "EMP_CODE_SEQ", sequenceName = "EMP_CODE_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "EMP_CODE_SEQ")
private String empCode;
@Column(name="EMP_MAIL_ID")
private String empMailId;
@Column(name="EMP_NAME")
private String empName;
public MstEmp() {
}
public String getEmpCode() {
return this.empCode;
}
public void setEmpCode(String empCode) {
this.empCode = empCode;
}
public String getCreatedBy() {
return this.createdBy;
}
public void setEmpMailId(String empMailId) {
this.empMailId = empMailId;
}
public String getEmpName() {
return this.empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
}
按我的理解,我們不需要在本機查詢中爲EMP_CODE賦值。因爲序列與它相關聯。
但此查詢給我的錯誤這樣的..
SEVERE: ORA-01400: cannot insert NULL into ("PERK"."MST_EMP"."EMP_CODE")
SEVERE: javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute native bulk manipulation query
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1179)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1112)
任何一個可以告訴我,我們是否需要在本地查詢提供EMP_CODE?
原生查詢會不會引用實體中自動聲明的序列?
謝謝。
1 。爲什麼你需要使用本地查詢來完成這樣一項簡單的任務? –