【问题标题】:DDL generation with EclipseLink on Oracle RDBMS: Generate varchar2 fields with character length semantics在 Oracle RDBMS 上使用 EclipseLink 生成 DDL:生成具有字符长度语义的 varchar2 字段
【发布时间】:2016-04-18 03:28:28
【问题描述】:

我使用eclipselink.ddl-generation.output-mode=database 来生成数据库模式。生成的 SQL 可以使用字符长度语义来生成 varchar2 字段吗? Enhance generated DDL of EclipseLink 似乎相关,对此问题的答案可能会解决此问题。

【问题讨论】:

    标签: oracle jpa eclipselink ddl


    【解决方案1】:

    有两种方法可以更改生成的 SQL。第一个是更改目标数据库平台并且是 EclipseLink 特定的。这允许您选择任何数据库平台类,并且您可以覆盖您的数据库平台以使用您想要的任何类型定义,但这将是通用的 - 即所有字符串都将使用 Varchar(255)。

    另一种方法是使用 JPA 注释来更改它。 @Column 注释允许指定可能用于或不用于 DDL 的长度,以及定义用于 DDL 的 columnDefinition。就像是 @Column(name="..", columndefinition="Varchar2(255) NOT NULL")

    【讨论】:

    • 我想避免在 @Column 注释中使用 columndefinition,因为这使得定义数据库是特定的。如果平台类将覆盖 printFieldTypeSize,这也将解决所有列定义相同的问题,不是吗?
    • 您应该可以使用列注释的长度。平台的 buildFieldTypes 方法是设置 String->Varchar2 映射和默认大小的地方。您可以使用定制器执行相同的操作,只需使用 session.getPlatform().getFieldTypes().put(String.class, new FieldTypeDefinition("VARCHAR2", NEW_DEFAULT_SIZE) 将适当的 FieldTypeDefinition 更改或添加到 String 类的映射中);.此处显示定制器eclipse.org/eclipselink/documentation/2.5/dbws/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2018-08-07
    • 2016-12-21
    • 2011-10-05
    • 2014-06-21
    • 1970-01-01
    相关资源
    最近更新 更多