Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
是否可以使用JPA持久化DSL Java对象?_Java_Jpa_Dsl - Fatal编程技术网

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

是否可以使用JPA持久化DSL Java对象?,java,jpa,dsl,Java,Jpa,Dsl,我有一个DSL Java对象,即一个POJO,它在setters中返回this,加上getter/setters有一个不寻常的命名模式: public class Demo { private long id; private String name; private Date created; public Demo id (long value) { id = value; return this; } public String id () { r

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

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方法吗

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

或者有没有一种方法可以告诉JPA在使用
created==null
创建新对象时使用
CURRENT TIMESTAMP

根据JPA规范(请参阅)第2.1.1章,您可以通过注释映射信息的字段而不是getter方法来告诉JPA使用字段访问而不是属性访问


我不认为您可以告诉JPA使用哪种命名约定作为getter和setter,因为这是一个基本的JavaBeans概念。

当您在类中定义时,是否可以简单地初始化创建的
,然后使用字段访问

private Date created = new Date();

哦,忘了提到你必须使用注释。不知道它是否适用于xml映射:-/如果我不想使用属性访问权限?这就是我提到的。将注释放在字段之前。现在,在您编辑您的帖子之后,问题仍然存在,“created”可能为空。我认为您可以使用@Column注释的属性“columDefinition”来定义此列的默认值(请参阅上述规范的第9.1.5章)。因为在我的情况下,new Date()是一个昂贵的操作:)我真的希望惰性地这样做。