Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 在Hibernate Tools 3.4.0.CR1生成的POJO中插入@NotNull注释_Eclipse_Hibernate_Annotations - Fatal编程技术网

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

Eclipse 在Hibernate Tools 3.4.0.CR1生成的POJO中插入@NotNull注释,eclipse,hibernate,annotations,Eclipse,Hibernate,Annotations,我正在使用EclipseJuno的Hibrate工具插件生成映射DB表的JavaBeans 它创建java文件(例如): 我喜欢它在属性或get方法上也写@NotNull注释: @Entity @Table(name = "ACTIVITIES") public class Activities implements java.io.Serializable { @NotNull private ActivitiesId id; @NotNull private

我正在使用EclipseJuno的Hibrate工具插件生成映射DB表的JavaBeans

它创建java文件(例如):

我喜欢它在属性或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中) 添加


@${pojo.importType(“org.hibernate.validator.NotNull”)}
但是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>
/**
${pojo.getFieldJavaDoc(字段,0)}
*/
${pojo.getFieldModifiers(field)}${pojo.getJavaTypeName(field,jdk5)}${field.name}=${pojo.getFieldInitialization(field,jdk5)};
+@${pojo.importType(“org.hibernate.validator.NotNull”)}

但是没有任何变化。

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

例如,对于您的表,请为名为id的列包含以下meta attibute:

<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>

javax.validation.constraints.NotNull
@非空私有
该字段将使用我们为“scopefield”属性提供的限定符限定范围。在那里,我们调整了我们需要的任何额外的资格。在本例中,我们将其标记为private,并额外添加@NotNull限定符。请参阅上面使用的元属性以获得额外的导入

有关元属性的完整列表,请参见


HTH.

谢谢你的回答。我有很多表,编辑所有表和列的“reveng.xml”太过膨胀。所以我正在寻找一种方法,在我的所有实体上生成@NotNull注释。为什么不在名称中尝试一个通配符(即,*)我使用的是reveng.xml:使用javax.validation.constraints.NotNull@NotNull private,我无法在生成的类中获得@NotNull注释
<#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>
<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>