LocationType
( BaseEntity
is a @MappedSuperclass
) 라는 엔티티 가 있습니다 .
@Entity
public class LocationType extends BaseEntity
이 엔티티에 대해 생성 된 테이블 이름은 location_type
입니다. 기본 명명 전략이 이와 같이 작동한다는 것을 이해합니다.
내가 이해할 수없는 것은 Hibernate가 리터럴 이름을 사용하도록 강제 할 수없는 이유 locationtype
입니다. 내가 무엇을 하던지:
@Entity(name = "LocationType")
public class LocationType
또는
@Entity
@Table(name = "LocationType")
public class LocationType
또는
@Entity(name = "LocationType")
@Table(name = "LocationType")
public class LocationType
테이블 이름은 항상 로 끝납니다 location_type
. Hibernate는 더 잘 알고 있습니다!
다른 이름을 사용하면
@Entity(name = "wtf")
그러면 테이블 이름도됩니다 wtf
.
문서화 된 행동입니까? 나에게 버그처럼 보입니다.
유사한 질문 : Hibernate는 확장 클래스에 대해 @Table (name = "...")을 무시합니다 . 생성 된 테이블 이름은 모두 소문자입니다 (하지만 상속 매핑을 참조합니다).
Hibernate가 @Table(name="...")
주석에 지정된 내용을 따르지 않는 것이 이상해 보였으 므로 지금까지 9 살이 된이 버그 보고서를 파헤 쳤습니다.
테이블 또는 열 이름이 제공되면 NamingStrategy를 사용하면 안됩니다.
버그는 거부되었고, God과 Gavin King은 그 이유를 알고 있습니다 (또는 지금은 단지 하나님 일 수도 있습니다). 이것은 JPA 1/2 사양과 모순됩니다. 따라서 최종 답변은 다음과 같습니다. Hibernate가 기본적으로 작동하는 방식입니다. 주석 이름을 중요하게 생각하는 경우 (또는 JPA 준수),이 문제를 해결하기 위해 고유 한 이름 지정 전략을 구현해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다