Пользовательские методы никогда не вызывают, даже когда аннотации на метод? - PullRequest
2 голосов
/ 15 июля 2011

В своих объектах Entity я помещаю все аннотации JPA в поля. Они хорошо работают с Project Lombok, который генерирует все геттеры и сеттеры для меня, значительно упрощая мой код.

EDIT:

Это также происходит, когда я перемещаю аннотацию вниз к методу

@OneToMany(targetEntity = ChannelDAOHb.class, mappedBy = "server", orphanRemoval = true)
@org.hibernate.annotations.Cascade({org.hibernate.annotations.CascadeType.ALL, org.hibernate.annotations.CascadeType.DELETE})
public Set<ChannelDAO> getChannels() {
    System.out.println("Getting some channels");
    ...
}

getChannels().add(new Channel("someChannel")); //Nothing printed here

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

public Set<ChannelDAO> getChannels() {
    throw new RuntimeException("Take that, Hibernate");
}

getChannels().add(new Channel("someChannel"));

Это исключение НИКОГДА не выбрасывается.

Что здесь происходит? Почему не вызывается мой добытчик?

1 Ответ

1 голос
/ 15 июля 2011

Hibernate использует отражение по умолчанию.Методы только для вашего собственного API.Это уменьшает строительные леса, необходимые для настройки постоянного слоя.

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