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?

Foi útil?

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();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top