2013-03-09 76 views
0

我使用的Eclipse的Juno Hiberate工具插件生成的Java bean映射數據庫表插入@NotNull註釋3.4.0.CR1

它創建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; 
    } 

} 

我wolud喜歡寫@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文件\日食\插件\ org.hibernate.eclipse.libs_3.4.0.v20120611-2017-H93決賽\ LIB \工具\冬眠-tools.jar中\ POJO) 加入

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

但Activities.java

我該怎麼辦?

在此先感謝

編輯: 我試圖修改 C:\ Program Files文件\日食\插件\ org.hibernate.eclipse.libs_3.4.0.v20120611-2017-H93決賽\ LIB \工具\ 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> 

但沒有任何變化。

回答

0

你可以通過hibernate reverse engineering xml進行調整(非常實用)。 Eclipse的hibernate工具將讓你指定一個。

對於你的表例如包括列名爲id以下元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> 

領域將限定我們給「範圍,領域」屬性的作用域。我們可以調整我們需要的任何額外限定符。在這個例子中,我們將它標記爲私有,並附加添加@NotNull限定符。請參閱上面用於額外導入的元語句。

對於元屬性的完整列表 - 看到這個link

HTH。

+0

Thaks爲您的答案。我有很多表格,並且對於所有表格和所有列編輯「reveng.xml」都太誇張了。 – user2088006 2013-03-11 16:10:12

+0

所以我正在尋找一種方法來在我所有的實體上生成@NotNull註釋。 – user2088006 2013-03-11 16:18:11

+0

爲什麼不試試名稱中的通配符(即*) – maggu 2013-03-12 03:07:30