2010-04-08 5 views
2

현재 데이터베이스 최적화를 조금만하고 있으며 JPA를 통해 테이블의 열 길이를 설정하려고합니다. 지금까지 다음과 같이 JPA를 사용하여 길이 문자열 (VARCHAR)를 설정 아무런 문제가 없습니다 :JPA 주석이있는 Long 값의 열 길이 설정

@Column(unique=true, nullable=false, length=99) 
public String getEmail() { 
    return email; 
} 

을 그러나, 나는 타입 롱 (BIGINT)의 인 컬럼에 대해 동일한 작업을 수행 할 때, 그렇지 않습니다 작업. 예를 들어 내가 작성하는 경우 :

@Id 
@Column(length=7) 
@GeneratedValue(strategy = GenerationType.AUTO) 
public Long getId() { 
    return id; 
} 

열 크기는 여전히 20의 기본 우리는 JPA에서 이러한 길이를 설정할 수 있습니까 아니면 내가 잘못 짚었 오전으로 설정되어 있습니까?

감사합니다. Gearoid.

답변

0

숫자 유형에 대해 정밀도, 스케일을 더 정확하게 지정하십시오. 또한 JDBC 드라이버와 RDBMS가 특정 열 유형에 대한 설정을 허용하는지 여부에 따라 달라집니다.

+0

흠, @Column (정밀도 = 7)을 설정하면 데이터베이스 클라이언트는 길이 (또는 정밀도) 20을 허용한다고 계속 알려줍니다. – Ger

+0

"그것이 당신에게"알려줍니다. 이 값은 JPA 구현에서 테이블을 만들 때 * 사용합니다. 따라서 DDL 문을 사용하여 DDL 문을 생성해야합니다 (JDBC 드라이버가 허용한다고 가정). JPA 구현은 (로그에서) 사용중인 DDL을 알려줍니다. – DataNucleus

0

Eclipse를 IDE로 사용하고 있습니까? 그렇다면 Dali 플러그인 (이미 설치되어 있음)을 사용하고 "JPA 세부 정보"보기를 활성화하는 것이 좋습니다. 이 뷰는 주석에 플러그 할 속성이 무엇인지 안내합니다.

길이 = 7 대신 크기 = 7을 사용할 수 있습니다. 그러나 JPA는 여전히 데이터베이스에 규모의 20을 유지할 준비를 할 것입니다.

또한 데이터베이스 다이얼로그를 올바르게 설정했는지 확인하십시오.

관련 문제