2010-02-18 2 views
8

데이터베이스 DDL을 생성하기 위해 Hibernate hbm2ddl 도구를 사용하는 JPA/Hibernate 데이터 모델이 있습니다. CHAR이어야하고 데이터베이스에서 VARCHAR 일 수있는 일부 문자열이 있습니다. 나는 DDL의 손 편집을 최소화하고 싶다. (나는 어떤 것은 일어날 것임을 깨달았다.)JPA/Hibernate DDL 생성; CHAR vs. VARCHAR

누구나 내가이 문제에 대해 어떻게 알아야할까요? 해킹 된 dialect를 통해 모든 String VARCHARS 또는 CHARS를 만들 수 있다는 것을 알지만, 이는 데이터베이스에 항상 적절한 것은 아닙니다.

내 클래스의 사용자 정의 열 정의 텍스트를 피하면서 주석 또는 aop을 사용하여이 작업을 수행하고 싶습니다.

감사합니다.

답변

4

마지막으로 방언의 한 유형에 길이 제한을 지정할 수 있음을 알게되었습니다. 내가 원하는 한 정확히 무엇을 그

registerColumnType(Types.VARCHAR, 10, "char($l)"); 

을,하지만 충분 : 그래서, (10)의 길이에 따라 아무것도가 있어야한다 VARCHAR 이상의 문자 무엇이든해야한다고 결정했습니다. 슬픈 일찍 찾지 못했습니다.

11

데이터베이스의 CHAR에 매핑하려는 문자열에 @Column(columnDefinition="CHAR(<your-char-length>)")으로 주석을 지정하십시오.

+1

답장을 보내 주셔서 감사합니다. 그러나 마지막 단락에서 언급 드리겠습니다. columnDefinition 사용을 피하려고합니다. 나는 더 나은 방법이 있기를 바랄 뿐이 었는데, 이것은 합리적인 원한 것처럼 보였습니다. –

+0

주석 추가와 주석 속성 추가의 차이점은별로 없습니다. – mtpettyp

+1

아,하지만 차이점은 속성의 내용입니다. 즉, 스키마 ddl에 직접 입력되는 텍스트이므로 본질적으로 데이터베이스와 관련이 있습니다. 또한 텍스트의 열 길이를 복제해야합니다. 이 특별한 경우는 그렇게 나쁘지는 않지만 할 수 있으면 피할 가치가 있습니다. 그것은 유망한 것으로 보이지 않고있다, 나는 인정해야한다. –