【问题标题】:insert @NotNull annotation in POJO generated by Hibernate Tools 3.4.0.CR1在 Hibernate Tools 3.4.0.CR1 生成的 POJO 中插入 @NotNull 注解
【发布时间】:2013-03-09 12:24:34
【问题描述】:

我正在使用 eclipse juno 的 Hiberate Tool 插件来生成 java bean 映射 DB 表

它创建java文件(例如):

@Entity
@Table(name = "ACTIVITIES")
public class Activities implements java.io.Serializable {

    private ActivitiesId id;
    private String title;

    @EmbeddedId
    @AttributeOverrides({
        @AttributeOverride(name = "id", column = @Column(name = "id", nullable = false)),
        @AttributeOverride(name = "codiceCreatore", column = @Column(name = "codice_creatore", nullable = false)) 
    })
    public SynchActivitiesDTOId getId() {
        return this.id;
    }

    public void setId(SynchActivitiesDTOId id) {
        this.id = id;
    }

    @Column(name = "title", nullable = false)
    public String getTitle() {
        return this.title;
    }

    public void setTitolo(String title) {
        this.title = title;
    }

}

我希望它在属性或 get 方法上也写 @NotNull 注释:

@Entity
@Table(name = "ACTIVITIES")
public class Activities implements java.io.Serializable {

    @NotNull
    private ActivitiesId id;
    @NotNull
    private String title;

    ...

}

我尝试编辑 Ejb3PropertyGetAnnotation.ftl (在 C:\Program Files\eclipse\plugins\org.hibernate.eclipse.libs_3.4.0.v20120611-2017-H93-Final\lib\tools\hibernate-tools.jar\pojo 中) 添加

<#if !property.optional>
    @${pojo.importType("org.hibernate.validator.NotNull")}
</#if>

但Activities.java中没有变化

我该怎么办?

提前致谢

编辑: 我试图修改 C:\Program Files\eclipse\plugins\org.hibernate.eclipse.libs_3.4.0.v20120611-2017-H93-Final\lib\tools\hibernate-tools.jar\pojo\PojoFields

<#foreach field in pojo.getAllPropertiesIterator()><#if pojo.getMetaAttribAsBool(field, "gen-property", true)> <#if pojo.hasMetaAttribute(field, "field-description")>    /**
     ${pojo.getFieldJavaDoc(field, 0)}
     */
 </#if>    ${pojo.getFieldModifiers(field)} ${pojo.getJavaTypeName(field, jdk5)} ${field.name}<#if pojo.hasFieldInitializor(field, jdk5)> = ${pojo.getFieldInitialization(field, jdk5)}</#if>;
</#if>
+ <#if !field.optional>@${pojo.importType("org.hibernate.validator.NotNull")}</#if>
</#foreach>

但没有任何变化。

【问题讨论】:

    标签: eclipse hibernate annotations


    【解决方案1】:

    您可以通过休眠逆向工程 xml 进行调整(非常实用)。 Eclipse hibernate 工具会让你指定一个。

    例如,对于您的表,为名为 id 的列包含以下元属性:

    <hibernate-reverse-engineering>
        <table-filter package="my.package" match-name="ACTIVITIES" />
        <table name="ACTIVITIES">
            <meta attribute="extra-import">javax.validation.constraints.NotNull</meta>
            <column name="titolo">
                <meta attribute="scope-field">@NotNull private</meta>
            </column>
        </table>
    </hibernate-reverse-engineering>
    

    该字段将使用我们为“scope-field”属性提供的限定符限定范围。在那里,我们调整了我们需要的任何额外的限定符。在此示例中,我们将其标记为私有并另外添加 @NotNull 限定符。有关额外导入,请参阅上面使用的元属性。

    有关元属性的完整列表 - 请参阅link

    HTH。

    【讨论】:

    • 感谢您的回答。我有很多表格,为所有表格和所有列编辑“reveng.xml”太宽泛了。
    • 所以我正在寻找一种在我的所有实体上生成@NotNull 注释的方法。
    • 为什么不在名称中尝试使用通配符(即 *)
    • 我正在使用这个 reveng.xml:
    • 使用 javax.validation.constraints .NotNull @NotNull private
      我无法获得我生成的类中的@NotNull 注释
    猜你喜欢
    • 1970-01-01
    • 2011-02-20
    • 2011-02-01
    • 2011-01-10
    • 1970-01-01
    • 2012-03-02
    • 2011-11-07
    • 2016-08-31
    • 2012-01-13
    相关资源
    最近更新 更多