gpt4 book ai didi

java - Hibernate 忽略列(如果不存在)

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

好吧,问题是我有一个应用程序可以查询不同的数据库,并且某些实体缺少列。有没有办法在不使用继承的情况下忽略缺失的列?

最佳答案

根据您的需求,有不同的可能性:

  1. 如果您从不需要这些额外的列(这些列仅存在于某些数据库中),那么您只需不在映射(或注释中)定义它们即可。然后 Hibernate 永远不会读取它们,并且在插入时将列设置为 null(如果您想要不同于 null 的值,可以在数据库中定义默认值或触发器)。

  2. 如果您需要额外的列(当它们存在时),那么您需要针对不同的数据库进行不同的映射。对于这种情况,最好使用 xml 映射文件。无论如何,每个数据库都有一个单独的 hibernate.cfg.xml (连接字符串位于其中)。在这里,对于具有不同列的表,您指定不同的映射文件(标签 <mapping resource="..." /> )。 Java pojo,i。 e. Java 类对于所有数据库都是相同的,它包含任何数据库中存在的所有列,但在数据库特定的映射文件中,您仅将这些列映射到该数据库中真正存在的 Java 成员。 (使用注释时,这很烦人,因为不同的数据库需要不同的 Java 类,并且必须处理代码中的逻辑。)

  3. 如果表是只读的,那么您可以在该表上定义一个数据库 View ,并让该 View 提供缺失的列和默认值。然后在 Hibernate 中映射 View 而不是表。

关于java - Hibernate 忽略列(如果不存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15280789/

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