gpt4 book ai didi

hibernate - SQLDelete 注释中忽略物理命名策略

转载 作者:行者123 更新时间:2023-12-01 00:22:26 25 4
gpt4 key购买 nike

我在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 annotation 允许您定义自定义的 native SQL 查询来替换默认的 hibernate 删除。

您应该只使用 Db 表和列名,因为命名策略不会用于 native sql。

关于hibernate - SQLDelete 注释中忽略物理命名策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47511676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com