I 내 응용 프로그램 JPA를 Hibernate 공급 업체 및 Oracle 11G DB와 함께 사용했습니다. 여기 JPA : @ SequenceGenerator가 시퀀스를 생성하지 않습니다.
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 엔티티의 세부 사항입니다 내 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를 제공해야합니까?
원시 쿼리는 엔터티에 자동으로 선언 된 시퀀스를 참조하지 않습니까?
감사합니다.
일예 : 당신이 EntityManager.persist()
방법을 통해 새로운 객체를 계속 될 경우
1 왜 그런 간단한 작업을 위해 네이티브 질의에 의존해야합니까? –