2016-11-25 5 views
0

ddl 생성에 EclipseLink를 사용하는 경우, 항상 기본 열 및 테이블 이름을 대문자로 지정하십시오. 각 열 이름 속성을 설정하는 대신 전역으로 비활성화하는 방법이 있습니까? , 또는 클래스 이름 또는 자신의 열 이름 serializer를 사용하게하려면?EclipseLink에서 작성시 자동 대문자 변환을 사용 불가능하게하는 방법

고맙습니다.

EclipseLink 출력 [EL Config] : metadata : [warehouseCreatedTimestamp] 요소의 열 이름이 기본값 : WAREHOUSECREATEDTIMESTAMP입니다.

entity [class entities.ActivityFlags]의 테이블 이름 기본값은 ACTIVITYFLAGS입니다.

답변

1

이는 구성에 따라 해제 할 수 있습니다 : (평소처럼)의 persistence.xml 또는 코드

<property name="eclipselink.jpa.uppercase-column-names" value="false"/> 

당신은 코드에서 구현, 선택 규칙을 구현하려는 경우에 https://www.eclipse.org/eclipselink/documentation/2.5/jpa/extensions/p_jpa_uppercase_column_names.htm

org.eclipse.persistence.dynamic.DynamicHelper.SessionCustomizer 

내 조각이 특정 규칙에 따라 테이블에 밑줄을 추가합니다. 열도 가능합니다.

public class MySessionCustomizer extends SessionCustomizer { 

@Override 
public void customize(Session session) throws SQLException { 


    for (ClassDescriptor descriptor : session.getDescriptors().values()) { 
     // Only change the table name for non-embedable entities with no 
     // @Table already 
     if (!descriptor.getTables().isEmpty() && descriptor.getAlias().equalsIgnoreCase(descriptor.getTableName())) { 
      String tableName = addUnderscores(descriptor.getTableName()); 
      descriptor.setTableName(tableName); 
    } 
} 
} 

<property name="eclipselink.session.customizer" value="pl.....MySessionCustomizer" /> 

persistence.xml을 편집에서 화재 : 사람들은 대문자 열 정통하다 말한다. 한 JPA 프로젝트에서 CamelCase를 사용하고 다른 역사적 종속성에서는 UPPER를 사용합니다. 일부 데이터베이스는 엄격한 (MS SQL Server), 일부는 아닙니다 (아포스트로피없이 주어진 컬럼의 더비)

+0

많은 감사합니다, 100 % –