2009-05-19 88 views
0

我有一個DSL Java對象,即其在setter方法加上干將返回this一個POJO/setter方法具有不尋常的命名模式:是否可以使用JPA來保存DSL Java對象?

public class Demo { 
    private long id; 
    private String name; 
    private Date created; 

    public Demo id (long value) { id = value; return this; } 
    public String id() { return id; } 
    public Demo name (String value) { name = value; return this; } 
    public String name() { return name; } 
    public Demo created (Date value) { created = value; return this; } 
    public Date created() { 
     if (created == null) created = new Date(); 

     return created; 
    } 

} 

是否可以告訴JPA使用「名稱(字符串)」和「name()」作爲setter/getter方法?

[編輯]我的問題是上面的created字段。對於這個字段,我想讓JPA使用「getter」created(),所以這個字段總是非空的。

或者有沒有辦法告訴JPA在使用created == null創建新對象時使用CURRENT TIMESTAMP

回答

0

根據JPA規範(請參閱JSR-220)第2.1.1章,您可以通過爲映射信息註釋字段而不是通過getter方法來告訴JPA使用字段訪問而不是屬性訪問。

我不認爲你可以告訴JPA哪個命名約定用於getter和setter,因爲它是一個基本的java bean概念。

+0

哦,忘了提及你必須使用註釋。不知道它是否適用於xml映射。 : -/ – rudolfson 2009-05-19 11:52:39

+0

如果我不想使用屬性訪問? – 2009-05-19 12:49:54

0

當你在類中定義,然後使用字段訪問時,你不能簡單地初始化created嗎?

private Date created = new Date(); 
相關問題