2012-02-12 16 views
7

Pamiętam, że istnieje adnotacja w JPA lub hibernacji, aby powiedzieć hibernacji, aby użyć metody getId/setId zamiast właściwości (dodawaliśmy adnotacje do naszych właściwości). Bez tego ustawienia getId powoduje trafienie w bazę danych i wypełnienie wszystkich pól tego obiektu, co nie jest tym, czego chcę. Czy ktoś wie, co to za adnotacja?hibernacja getId ładuje obiekt, mimo że jest leniwy

Przykład:

public void Project { 
    @Id 
    //Other annotation forcing hibernate to use property get/settter 
    public Long id; 
} 

public Ticket { 
    @ManyToOne(lazy=true) 
    public Project project; 
} 

tak, ticket.getProject.getId() powoduje uderzanie bazy danych, aby projekt, gdy id jest już w obiekcie proxy projektu hibernacji. Adnotacja naprawi to, co pamiętam.

dzięki, Dean

Odpowiedz

12

Trzeba powiedzieć hibernacji, aby uzyskać dostęp za pomocą identyfikatora dostępu właściwość zamiast dostępu pola:

@Id 
@Access(AccessType.PROPERTY) 
private Long id; 

Naprawdę nie powinny dokonać pola publicznego.

+0

Połączyć tutaj z bardziej szczegółowymi; http://256.com/gray/docs/misc/hiber/napedy_pakiet_nazwa_zabytów.shtml –

+0

Przepraszam, korzystałem z playframework i przyzwyczajasz się do tego po pewnym czasie. Sam nie lubię pól publicznych, ale po użyciu scala, chciałbym, żeby java miała coś takiego, żeby zredukować kodowanie. –

+0

shoot, generuje ostrzeżenie dla każdej klasy, w której jest włączony, ponieważ specyfikacja JPA mówi, że adnotacja musi iść na metodę getId, ale przeniesienie tam powoduje tylko wyjątek i nie będzie działać wcale. Jak to właściwie robić w dzisiejszych czasach? (Używałem tego na polu, ale mogło to być coś szczególnego dla hibernacji) ... dzięki. –

Powiązane problemy