>  기사  >  데이터 베이스  >  MySQL에서 다형성 추상 슈퍼클래스와 함께 @GeneratedValue GenerationType.TABLE을 사용할 때 ''where 절'의 알 수 없는 열 'sequence_name'' 오류를 해결하는 방법은 무엇입니까?

MySQL에서 다형성 추상 슈퍼클래스와 함께 @GeneratedValue GenerationType.TABLE을 사용할 때 ''where 절'의 알 수 없는 열 'sequence_name'' 오류를 해결하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-11 18:36:02904검색

How to Resolve

@GeneratedValue MySQL을 통한 다형성 추상 슈퍼클래스

Hibernate와 MySQL을 활용하는 Spring MVC 애플리케이션에서 추상 슈퍼클래스인 BaseEntity의 하위 클래스를 유지하려고 시도하는 것이 관찰되었습니다. , "테이블 'docbd.hibernate_sequences'가 존재하지 않습니다." 오류가 발생합니다. 이 오류는 @GeneratedValue에 GenerationType.TABLE을 사용하고 MySQL 내에서 시퀀스 지원이 부족하여 발생합니다.

엔터티 ID를 관리하는 추상 슈퍼클래스로 인해 GenerationType.IDENTITY를 사용할 수 없으므로 GenerationType.SEQUENCE는 다음과 같습니다. 지원되지 않는 경우 이 문제를 해결하는 방법에 대한 질문이 필요합니다. 제공된 코드 조각은 DAO(데이터 액세스 개체) 내의 추상 슈퍼클래스(BaseEntity), 예제 하위 클래스(CCD), 도메인 특정 언어(DDL) 및 JPQL 코드를 보여줍니다.

사용된 상속 전략은 InheritanceType입니다. .TABLE_PER_CLASS - 각 하위 클래스에 대한 별도의 테이블을 나타냅니다. MySQL이 시퀀스를 사용할 수 없다는 점을 감안할 때 GenerationType.TABLE을 사용하는 대안은 필연적으로 hibernate_sequences 테이블이 없게 됩니다.

포스터는 @MappedSuperClass를 사용하는 것이 실행 가능한 옵션이 아니라고 주장하며 상호 교환 가능한 ManyToOne 관계의 필요성을 언급합니다. . 예를 들어 AccessLog에는 actor_entity와 target_entity가 포함되어 있으며 둘 다 BaseEntity에서 상속됩니다. 이 시나리오에서 @MappedSuperClass를 사용하면 AccessLog가 BaseEntity를 찾을 수 없다는 오류가 발생합니다.

문제를 해결하기 위해 제안된 대로 hibernate_sequences 테이블이 생성되었습니다. 그러나 새로운 오류가 발생했습니다: "'where 절'의 알 수 없는 열 'sequence_name'." 이 오류는 Hibernate에 의해 시작된 SQL 쿼리를 가리킵니다: "업데이트를 위해 시퀀스_이름 = 'BaseEntity'인 hibernate_sequences에서 시퀀스_next_hi_value를 선택하십시오."

이 특정 오류를 해결하려면 포스터에서 hibernate_sequences 테이블 내 누락된 'sequence_name' 열을 해결하는 데 도움이 필요합니다.

위 내용은 MySQL에서 다형성 추상 슈퍼클래스와 함께 @GeneratedValue GenerationType.TABLE을 사용할 때 ''where 절'의 알 수 없는 열 'sequence_name'' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.