【问题标题】:Dali Java Persistence Tools - Database datatype to Java datatype mappingDali Java Persistence Tools - 数据库数据类型到 Java 数据类型的映射
【发布时间】:2021-04-29 13:36:53
【问题描述】:

我正在使用 Dali Java Persistence 工具为具有 300 多个数据库表的现有数据库创建实体。 如果我运行该工具,它会转换

  • 数据库xml类型转java对象
  • 数据库时间戳转java时间戳
  • 数据库整数到java int

等等。

当我将我的实体放入 Spring 项目时,很多这些数据类型映射(例如上面提到的 3 个)会导致服务器启动时出错,并且某些映射会导致 CRUD 操作期间失败。

我有适合我的正确数据类型映射。

我可以看到 Dali 工具为我提供了为每个表设置数据类型映射的选项。

问题是我有超过 300 个表,并且这些相同的映射在所有这些表中重复。

我想更改工具的行为,将数据库 XML 映射到 java String,数据库整数映射到 java Integer,数据库时间戳映射到 java java.sql.Date 等。

我不想对这 300 个表中的每一个表都进行相同的数据类型映射更改。

是否可以指定 Dali Java Persistence Tool 的行为以按照我想要的方式执行映射,而不是按照它执行映射的方式执行映射,而无需访问每个表并单独更改它。

提前致谢。

【问题讨论】:

    标签: java eclipse jpa dali


    【解决方案1】:

    我已经很多年没有尝试过了,但它可能仍然有效:

    Dali(Eclipse 中生成 JPA 实体的部分)使用 DTP(Eclipse 的另一部分)来确定特定数据类型的 Java 属性类型。这些映射是特定于数据库平台的,并在各种 DTP 插件的.xmi 文件中指定。

    例如,在 Eclipse JEE 2021-03 中,对于 PostgreSQL,数据类型 ABSTIME 映射到文件中的 Java 类型 java.lang.Object /runtime/vendors/postgresql/postgresql_8.x.xmi 在插件 jar 中 ./plugins/org.eclipse.datatools.enablement.postgresql.dbdefinition_1.2.101.201811012051.jar.

    根据您的数据库平台和您安装的其他插件,这些设置可能会有所不同。您可以提取适当的 .xmi 文件,对其进行编辑,然后将其返回到其 jar 中,这应该会改变实体的生成方式。

    【讨论】:

    • 我尝试对 ms sql server 文件执行这些步骤,但没有效果。事实上,在所有文件中,数据库 XML 类型已经映射到 java.lang.String 对象,但 Dali 仍然总是将它们转换为 java.lang.Object 。 Dali 持久化工具完全不查看这些映射,但如果我使文件损坏,则 Eclipse 不会连接到数据库,所以有人正在查看这些文件,但 Dali 完全没有查看它们。
    • 嗯。很抱歉,这不起作用。我没有工作环境来测试它;我也没有手边的 MS SQL Server。我知道 java.lang.Object 是如果 Dali 无法从 DTP 元数据中检索 Java 类型时使用的默认类型;但我不知道为什么这里使用这个默认值。
    猜你喜欢
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多