我有2列,一個包含人,第二個包含他們的利益。休眠搜索查詢
我需要根據自己的興趣搜索查詢。
(如果你需要一些信息,我沒有在這裏給它,我可能在這裏給了它:Java SQL Query - Hibernate)
在這個時刻,我想這樣做這樣的:
Query query = session.createQuery("SELECT new com.mycompany.kwestionariusz.Osoba(o.id, o.imie, o.nazwisko, o.telefon, o.email, o.uczelnia, o.doswiadczenie, o.skadSlyszal) from Osoba as o INNER JOIN o.zainteresowania as z FETCH ALL PROPERTIES WHERE ((o.id) = (id_osoby)) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?)");
//Query query2 = session.createQuery("SELECT new com.mycompany.kwestionariusz.Osoba(o.id, o.imie, o.nazwisko, o.telefon, o.email, o.uczelnia, o.doswiadczenie, o.skadSlyszal) from Osoba as o INNER JOIN o.zainteresowania as z FETCH ALL PROPERTIES WHERE ((o.id) = (id_osoby)) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?)");
query.setString(0,"%"+input1+"%");
query.setString(1,"%"+input2+"%");
query.setString(2,"%"+input3+"%");
query.setString(3,"%"+input4+"%");
query.setString(4,"%"+input5+"%");
List<Osoba> osoby = query.list(); // robimy sobie liste na podst zapytania
wyswietlWybrane(osoby);
wyswietlWybrane方法:
private void wyswietlWybrane(List<Osoba> osoby) {
for (Osoba a : osoby) {
List zainteresowania1 = a.getZainteresowania();
System.out.println("\n\n" + a.getId() +". " + a.getImie() + " " + a.getNazwisko() + "\nTelefon: " + a.getTelefon() + "\nEmail: " + a.getEmail() + "\nUczelnia: " + a.getUczelnia() + "\nDoswiadczenie: " + a.getDoswiadczenie() + "\t\n" + "Skad slyszal: " + a.getSkadSlyszal());
System.out.print("Obszary zainteresowan: ");
for (Iterator iterator2 = zainteresowania1.iterator(); iterator2.hasNext();){
Zainteresowania nazwa = (Zainteresowania) iterator2.next();
System.out.print(nazwa.getZainteresowanie() + ". ");
}
}
}
勾住ShowAll方法:
public void wyswietlWszystkie()
{
try
{
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
List<Osoba> osoby = session.createQuery("from Osoba").list(); // tworzymy sobie liste z zapytania do bazy ktora wyswietli nam wszystkich
wyswietlWybrane(osoby); // przekazujym ta liste do innej i wyswietlamy
session.getTransaction().commit();
session.close();
}
catch (HibernateException e)
{
HibernateUtil.getSessionFactory().close(); //Destroy this SessionFactory and release all resources (caches, connection pools, etc).
}
}
我現在使用的查詢有一些問題。
首先。 當我使用WyswietlWszystkie方法,然後我得到了這樣的輸出:
1. Krystian Example
Telefon: 900900900
Email: [email protected]
Uczelnia: Example School
Doswiadczenie: Example experience
Skad slyszal: Friends
Obszary zainteresowan: Java. Android. Technologie WWW (HTML, CSS, JavaScript). Projektowanie aplikacji.
,但是當我用我的搜索方法,並通過列表wyswietlWybrane(在wyswietlWszystkie IM傳遞列表給該方法太)。
我得到這樣的輸出:(其搜索:JAVA):
1. Krystian Example
Telefon: 900900900
Email: [email protected]
Uczelnia: Example School
Doswiadczenie: Example experience
Skad slyszal: Friends
Obszary zainteresowan:
1. Krystian Example
Telefon: 900900900
Email: [email protected]
Uczelnia: Example School
Doswiadczenie: Example experience
Skad slyszal: Friends
Obszary zainteresowan:
,你可以看到它的一倍,我不能看到 「obszary zaintereson」。
現在搜索:Java和Android沒有給出任何結果(它應該因爲這個人有他們兩個)。
爲TECHNOLOGIE WWW和Java:
1. Krystian Example
Telefon: 900900900
Email: [email protected]
Uczelnia: Example School
Doswiadczenie: Example experience
Skad slyszal: Friends
Obszary zainteresowan:
所有類等已經包含在線程我在文章的開頭給出的鏈接。
我該怎麼辦檢索查詢的?它表演如此瘋狂?
波蘭語名稱變量和方法名稱對於非斯拉夫語者非常難以遵循。你能把它們翻譯成英文,包括評論嗎? –
對不起,我剛纔看到你的評論,肯定會在幾分鐘內做到這一點:) – arienn