首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Hibernate Tools 3.4.0.CR1生成的POJO中插入@NotNull注释

在Hibernate Tools 3.4.0.CR1生成的POJO中插入@NotNull注释
EN

Stack Overflow用户
提问于 2013-03-09 20:24:35
回答 1查看 1.7K关注 0票数 0

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

它创建java文件(例如):

代码语言:javascript
复制
@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注释:

代码语言:javascript
复制
@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)中添加

代码语言:javascript
复制
<#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

代码语言:javascript
复制
<#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>

但一切都没有改变。

EN

回答 1

Stack Overflow用户

发布于 2013-03-11 18:48:28

您可以通过hibernate反向工程xml采用一种调整方法(非常实用)。Eclipse hibernate工具将允许您指定一个。

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

代码语言:javascript
复制
<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“属性指定的限定符。在那里,我们调整了我们需要的任何额外的限定符。在本例中,我们将其标记为private,并额外添加了@NotNull限定符。请参阅上面使用的meta属性以进行额外的导入。

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

HTH。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15310623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档