Rozważmy następujący dwóch relacji:Hibernate: Kryteria ze stołem do dołączenia wielu do wielu?
@Entity class Foo {
@Id id;
@ManyToMany
@JoinTable(name = "ATag",
joinColumns = @JoinColumn(name = "foo_id"),
inverseJoinColumns = @JoinColumn(name = "tag_id"))
Set<Tag> tags;
}
@Entity class Tag {
@Id Long id;
String name;
}
Nie ma odpowiednia klasa jednostka do łączenia tabeli atag. Teraz chcę uzyskać wszystkie instancje Foo z tagiem o nazwie "tag1", czy możliwe jest użycie tylko kryteriów?
Może być pomocne pod-zapytanie, ale nie mogę utworzyć DetachedCriteria dla klasy ATag.class, która nie istnieje.
Należy pamiętać o używaniu właściwości obiektu, a nie samego obiektu. Ograniczenia za pomocą hibernacji używają nie tylko klucza podstawowego zdefiniowanego przez POJO. W tym przykładzie użyto nazwy atrybutu znaczników obiektów. Straciłem czas, próbując ustawić cały obiekt zamiast jawnie powiedzieć, która własność musi być sprawdzona zgodnie z predykatem kryteriów. –
Dlaczego konieczne jest użycie aliasu? Nie możesz po prostu użyć 'tags.name' zamiast' tagsAlias.name'? – sp00m
Utworzenie aliasu powoduje automatyczne sprzężenie wewnętrzne. – derrik