2016-06-06 6 views
-1

Ich möchte zwei Tabellen in einer Spring + Hibernate-Anwendung mithilfe einer Kriterienabfrage verbinden, aber es funktioniert nicht. Ich habe meine Tabellen und den DAO-Code unten eingefügt.So verbinden Sie zwei Tabellen in Spring und Hibernate mithilfe einer Kriterienabfrage

Benutzer Tisch

---------------------------------------------------------- 
| Column            | | 
---------------------------------------------------------- 
| id             | PK | 
| address            | | 
| mobile            | | 
| otp             | | 
| password           | | 
| user_name           | | 
| user_type           | | 
---------------------------------------------------------- 

Tracking- Tabelle

---------------------------------------------------------- 
| Column            | | 
---------------------------------------------------------- 
| id             | PK | 
| location           | | 
| product_id           | | 
| qrdate            | | 
| serial            | | 
| userId            | FK | 
---------------------------------------------------------- 

DAO Code

Criteria crit = currentSession().createCriteria(QrCodeList.class); 

Criteria prdCrit = crit.createCriteria("user"); 
prdCrit.add(Restrictions.eq("serial","F1VKCva01")); 

List results = crit.list(); 

Ausführen der Kriterien Abfrage wirft immer einen Fehler.

+2

Fehlermeldungen enthalten wichtige Hinweise darauf, was falsch ist. Sagen Sie niemals nur "es gibt einen Fehler" - fügen Sie die genaue und vollständige Fehlermeldung hinzu. Also, was genau ist die Fehlermeldung, die Sie bekommen? – Jesper

+2

Was ist 'QrCodeList'? Welcher Tabelle entspricht es? Sie können von der Tabelle "Tracking" über die Spalte "userId" zur Tabelle "User" gelangen. Wie gehen Sie jedoch davon aus, dass Sie von der Tabelle "User" zur Tabelle "Tracking" wechseln, indem Sie eine Kriterienabfrage für "User" und erstellen Dann geben Sie eine 'Seriennummer' an, um zu finden? – manish

+0

zeigt es org.hibernate.QueryException: konnte Eigenschaft nicht auflösen: Benutzer von: com.virtual.applets.mpark.entity.QrCodeList – sathish

Antwort

0

Sie benötigen einen Alias ​​

Criteria crit = session.createCriteria("user"); 

crit.createAlias("user.tracking", "tracking") 
crit.add(Restrictions.eq("tracking.serial","F1VKCva01")); 

List results = crit.list(); 

Sie verwenden müssen, um eine Zuordnung von User zu Tracking haben.

+0

wenn ich Ihren Code benutze, zeigt es lokale variable crit möglicherweise nicht initialisiert werden, bitte sagen Sie mir, was tun wird ? – sathish

+0

@sathish Sorry, ich repariere es. –

Verwandte Themen