gpt4 book ai didi

java - 如何阻止持久性更改数据库、JPA

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

我使用camel和open jpa作为持久提供程序,但我不希望在生产时运行更改语句。persistence.xml 的快照

<persistence-unit name="camel-openjpa-oracle-alert" transaction-type="RESOURCE_LOCAL">              
.
.
<provider>
org.apache.openjpa.persistence.PersistenceProviderImpl
</provider>
<properties>
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=false)" />
</properties>
.
.
</persistence-unit>

我们必须为openjpa.jdbc.SynchronizeMappings设置什么值,以便不执行alter命令。

我进行了搜索,但找不到任何此类值。

最佳答案

如果能更多地了解您正在做什么以及为什么需要使用 SynchronizeMappings,那就太好了。您使用ForeignKeys=true的事实告诉我您希望OpenJPA读取您的架构并确定您是否定义了任何数据库FK(即,OpenJPA知道这些FK,以便它可以正确排序SQL以遵守父/子FK约束)。这是 SynchMappings 的完全有效的使用。但是,通过使用“buildSchema”,您明确告诉 OpenJPA 让“数据库架构与您现有的映射相匹配”......此评论摘自此 OpenJPA 文档:

http://openjpa.apache.org/builds/1.2.3/apache-openjpa/docs/ref_guide_mapping.html#ref_guide_mapping_synch

因此,您专门告诉 OpenJPA 更新您的数据库架构。如果您不希望 OpenJPA 更新您的架构以匹配您的域模型,您可以删除“buildSchema”。也就是说,尝试:

或者您可以使用“validate”代替“buildSchema”...但是,正如上面的文档所述,如果 OpenJPA 发现架构/域不匹配,这可能不是您想要的,它将抛出异常。我建议您阅读上述文档,并查看可用的选项。

谢谢

希思·托曼

关于java - 如何阻止持久性更改数据库、JPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39370017/

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