题
我有一个dsl java对象,即返回的pojo this
在Setters中,Geters/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()”作为setter/getter方法?
编辑]我的问题是 created
上面的字段。对于此字段,我希望JPA使用“ Getter” created()
因此,该领域将永远是非零的。
还是有办法告诉JPA使用 CURRENT TIMESTAMP
当创建一个新对象时 created == null
?
解决方案
根据JPA规格(请参阅 JSR-220)第2.1.1章,您可以告诉JPA使用字段访问,而不是通过注释字段来映射信息而不是Getter方法来使用属性访问。
我认为您无法告诉JPA,因为这是一个基本的Java Beans概念,因此要用于Getters和Setters哪个命名约定。
其他提示
你不能简单地直觉 created
当您在课堂中定义时,然后使用字段访问。
private Date created = new Date();
不隶属于 StackOverflow