3
persistance.xml에 매핑 된 필사적 명명 전략은 SQLDelete 주석이있는 엔티티에서 em.remove (소프트 삭제를 시도)를 호출하는 것을 제외하고는 훌륭하게 작동합니다. 누구나 비슷한 문제가 있었습니까?SQLDelete 주석에서 물리적 이름 지정 전략이 무시됩니다.
주석
<properties>
<property name="hibernate.physical_naming_strategy" value="common.hibernate.strategy.PhysicalNamingStrategyImpl" />
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
<property name="hibernate.show_sql" value="true"/>
</properties>
내 관련 persistance.xml :
@SQLDelete(sql = "UPDATE MasGraphic MASG SET MASG .deleted = true WHERE MASG.id = ? and MASG.updated = ?")
그리고 오류는 다음과 같습니다
Table "UPDATE MASGRAPHIC MASG SET MASG.deleted = true WHERE MASG.id = ? and MASG.updated = ? [42102-193]
[ERROR ] HHH000346: Error during managed flush [org.hibernate.exception.SQLGrammarException: could not prepare statement]
편집 :
Caused by: org.h2.jdbc.JdbcSQLException: Table "MASGRAPHIC" not found; SQL statement:
UPDATE MASGRAPHIC MASG SET MASG.deleted = true WHERE MASG.id = ? and MASG.updated = ? [42102-193]
: 예외의 일부에 의한 부가하는
내 맞춤형 PhysicalNamingStrategyImpl은 MASGRAPHIC이 아니라 MAS_GRAPHIC이라는 테이블을 구성합니다.
P. 귀하가 필요로하는 다른 관련 정보를 알지 못하므로 언제든지 물어보십시오.
@SQLDelete가 네이티브 SQL 문을 원한다면 이름 지정 전략에 아무런 영향이 없어야합니다 ... 테이블 이름에 대문자가 더 이상하다는 것을 발견했습니다. – Zeromus
@Zeromus 현상금 보상을받을 자격이 있습니다 (Java/Hibernate 표준을 준수하는 Sugestion을 제안하십시오) –