2

단일 테이블 전략으로 기존 엔티티를 확장하는 클래스가 있습니다 (변경할 수 없음). 나는 내가 노력하는 기업에 대한 UniqueConstraint를 사용하려면 :@UniqueConstraint를 단일 테이블 상속 (JPA)과 함께 사용하는 방법?

@Entity 
@Table(name = "t_document") 
public class Document implements Serializable { 
... 
} 

@Entity 
@Table(uniqueConstraints = { @UniqueConstraint(name = "Test", columnNames = { ... }) }) 
public class MyDocument extends Document { 
... 
} 

고유 제한 조건은 전혀 로그 파일에 아무것도 사용하지 않습니다. 이 상황에서 UniqueConstraints를 사용하는 올바른 방법입니까?

(우리는 JPA2, 보스 7.1을 사용)

+0

클래스를 어떻게 생성합니까? '@ UniqueConstraint'는 테이블 생성을 위해서만 작동한다. –

+0

테이블은 Hibernate/JPA 을 통해 생성된다. 테이블이 올바르게 작성되었으며 제한 조건 만 누락되었습니다. – Haiko

답변

1

당신은 하위 클래스 uniqueConstraints 지시어는 무시됩니다 그 이유는, 기본 클래스 @Table 선언을 무시할 수 없습니다.

JPA를 사용하면 override annotations with xml declarations 수 있습니다. 그래서 당신은 거기에 고유 제한 조건을 클래스 거주자에 orm.xml 파일을 추가하고 추가해야합니다

<entity-mappings 
    xmlns="http://java.sun.com/xml/ns/persistence/orm" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd" 
    version="2.0"> 

    <package>...</package> 
    <entity class="Document" access="PROPERTY" metadata-complete="false"> 
     <table name="document"> 
      <unique-constraint> 
       <column-name>first_column</column-name> 
       <column-name>second_column</column-name> 
      </unique-constraint> 
     </table>    
</entity-mappings> 

만에 그것을 사용하면 당신도의 MyDocument 서브 클래스가 필요하지 않을 수도 있습니다이 방법 DDL 스키마를 대체하십시오.