Mirki, mam pewien problem z Hibernate. Mam przykładową klasę @Entity:
@Entity
public class Sample{ int id; String field1; @ElementCollection Set items = new HashSet<>(); } Podczas uruchamiania, hibernate tworzy mi automatycznie nowa tabelę: SAMPLEITEMS z kolumnami: SAMPLEID i ITEMS. Dzięki czemu dla jednej wartości Sample mogę mieć wiele elementów zbioru items - połączonych za pomocą sampleid. Mam problem z wymyśleniem customowej query, która mi będzie wyszukiwać podany "items" w tabeli SAMPLEITEMS i pobierać dla niego dane z tabeli SAMPLE (Za pomocą sampleid). Mając już bazę ,można to łatwo zrobić za pomocą left joina, ale w HQLu - tak jakby nie wykrywało mi tej "tworzonej przy starcie" tabeli. Próbowałem użyć takiej @Query:
@Query("SELECT sp from Sample sp left join sp.items as it where it.id = sp.id ....) no i działa, tylko że jako sp.id - bierze dane z kolumny "items" w SAMPLEITEMS. A ja chcę żeby brało z SAMPLEID.
Próbowałem @Query("SELECT sp from Sample sp left join sp.items as it where it.sample_id = sp.id ....), ale leci wtedy Exception: QueryException: cannot dereference scalar collection element: sampleid.
@mariusz-laszczka: albo nie do końca rozumiem, albo nie możesz zapisać po prostu:
SELECT sp from Sample sp join sp.items as it where it = :parametrDoWyszukania ? Nie do końca rozumiem te Twoje zapisy typu it.id = sp.id, to nie jest sql, nie musisz definiować po czym robisz joina, hql bazuje na obiektach
#rosja #ukraina Co wam zrobiła Rosja personalnie? Zapraszam do dyskusji ;). Chciałbym przeczytać choć jeden komentarz, gdzie ktoś poczuł się skrzywdzony przez Rosjan.
Mirki, mam pewien problem z Hibernate. Mam przykładową klasę @Entity:
@Entity
public class Sample{
int id;
String field1;
@ElementCollection
Set items = new HashSet<>();
}
Podczas uruchamiania, hibernate tworzy mi automatycznie nowa tabelę: SAMPLEITEMS z kolumnami: SAMPLEID i ITEMS. Dzięki czemu dla jednej wartości Sample mogę mieć wiele elementów zbioru items - połączonych za pomocą sampleid.
Mam problem z wymyśleniem customowej query, która mi będzie wyszukiwać podany "items" w tabeli SAMPLEITEMS i pobierać dla niego dane z tabeli SAMPLE (Za pomocą sampleid). Mając już bazę ,można to łatwo zrobić za pomocą left joina, ale w HQLu - tak jakby nie wykrywało mi tej "tworzonej przy starcie" tabeli.
Próbowałem użyć takiej @Query:
@Query("SELECT sp from Sample sp left join sp.items as it whereit.id = sp.id ....)
no i działa, tylko że jako sp.id - bierze dane z kolumny "items" w SAMPLEITEMS. A ja chcę żeby brało z SAMPLEID.
Próbowałem
@Query("SELECT sp from Sample sp left join sp.items as it where, ale leci wtedy Exception: QueryException: cannot dereference scalar collection element: sampleid.it.sample_id = sp.id ....)
Macie pomysł jak zjoinowac te tabele po SAMPLEID?
SELECT sp from Sample sp join sp.items as it where it = :parametrDoWyszukania?
Nie do końca rozumiem te Twoje zapisy typu it.id = sp.id, to nie jest sql, nie musisz definiować po czym robisz joina, hql bazuje na obiektach
SELECT s FROM Sample s WHERE :item MEMBER OF s.items?