Как переопределить AccessType для одного поля - PullRequest
2 голосов
/ 22 февраля 2011

У меня есть класс, который содержит несколько полей, и все они помечены свойством.Для одного из этих полей, однако, я хочу представить двойную для базы данных и дату для пользователя.

Я пробовал любое количество комбинаций здесь, но hbm2ddl (и, следовательно, hibernate) продолжает обрабатыватьсвойство dwell как метка времени.Как мне реализовать это, если не с помощью аннотаций, подобных тем, что у меня есть ниже (это упрощенная версия рассматриваемого класса)?

Я бы рассмотрел перемещение всех аннотаций в поля, но класс, которыйнеобходимо, чтобы это находилось на вершине иерархии наследования, включающей еще 25 классов и множество аннотаций.Чтобы переместить все аннотации, потребовалась бы лучшая часть дня, и это кажется неуместным способом справиться с этим.

@Entity
@AccessType("property")
public class Test {

    private long id;
    private Double dwell;

    @Id
    @Column(name = "ID", nullable = false)
    @GeneratedValue(strategy = GenerationType.AUTO)
    @NotNull
    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    @AccessType("field")
    @Column(name = "DWELL_ID", precision = 10, scale = 3)
    public Date getDwell() {
        return new Date();
    }

    public void setDwell(Double dwell) {
        this.dwell = dwell;
    }

}

1 Ответ

3 голосов
/ 22 февраля 2011

Это выглядит немного странно.Я не уверен, что изменение типа доступа действительно будет работать для вас.

Вы нарушаете соглашение javabeans, которое рискованно.Не делайте этого - пусть получатели и установщики будут просто получателями и установщиками, без скрытых дополнений, таких как конструирование объектов.

Я бы просто написал другой метод - getDwellAsDate() и сделал бы преобразование там.Вы также можете определить пользовательский режим гибернации Type, чтобы справиться с этим (но это того не стоит)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...