是否可以使用JPA持久化DSL Java对象?

时间:2009-05-19 10:05:29

标签: java jpa dsl

我有一个DSL Java对象,即在setter中返回this的POJO加上getter / setter有一个不寻常的命名模式:

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(String)”和“name()”作为setter / getter方法?

[编辑]我的问题是上面的created字段。对于此字段,我希望JPA使用“getter”created(),因此该字段将始终为非NULL。

或者有没有办法告诉JPA在使用CURRENT TIMESTAMP创建新对象时使用created == null

2 个答案:

答案 0 :(得分:0)

根据JPA规范(参见JSR-220)第2.1.1节,您可以告诉JPA使用字段访问而不是属性访问,方法是注释字段以获取映射信息,而不是getter方法。

我认为你不能告诉JPA哪个命名约定用于getter和setter,因为它是一个基本的java bean概念。

答案 1 :(得分:0)

当你在课堂上定义时,你不能简单地初始化created,然后使用字段访问。

private Date created = new Date();