É possível persistir um objeto DSL Java com JPA?
Pergunta
Eu tenho um objeto DSL java, ou seja, um pojo que retorna this
Em Setters, mais os getters/setters têm um padrão de nomeação incomum:
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;
}
}
É possível dizer ao JPA para usar "Name (String)" e "Name ()" como o método Setter/Getter?
Editar] Meu problema é o created
campo acima. Para este campo, quero que o JPA use o "getter" created()
Portanto, o campo sempre não será nulo.
Ou existe uma maneira de dizer ao JPA para usar CURRENT TIMESTAMP
Ao criar um novo objeto com created == null
?
Solução
De acordo com a especificação JPA (ver JSR-220) Capítulo 2.1.1 Você pode dizer ao JPA para usar o acesso de campo em vez do acesso à propriedade anotando os campos para mapear informações e não os métodos getter.
Eu não acho que você possa dizer ao JPA qual convenção de nomenclatura usar para getters e setters, pois é um conceito básico de feijão Java.
Outras dicas
Você não poderia simplesmente intializar created
Quando você define na classe e usa acesso de campo.
private Date created = new Date();