【发布时间】:2017-11-27 13:05:24
【问题描述】:
我在persistance.xml 中映射的物理命名策略效果很好,除了尝试在带有SQLDelete 注释的实体上调用em.remove(尝试软删除)。有人遇到过类似的问题吗?
我的相关persistance.xml
<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>
注释:
@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 将该表配置为 MAS_GRAPHIC 而不是 MASGRAPHIC。
附:我不知道您可能需要的任何其他相关信息,请随时询问。
【问题讨论】:
-
如果我没记错的话@SQLDelete 想要原生 SQL 语句,所以命名策略应该没有效果......我发现表名变成大写更奇怪......
-
@Zeromus 请将其格式化为答案,您是第一个,因此应该得到赏金奖励(如果愿意,请提出符合 Java/Hibernate 标准的建议)
标签: hibernate sql-delete