Hallo zusammen,
ich habe ein Problem (verzweife gerade) mit einem Select-Statement, dass sich auf eine one-to-many Beziehung bezieht. Die one-to-many-Beziehung für sich funktioniert, im Select-Statment schränke ich die Abfrage jedoch noch weiter ein. Es muss sich um ein bestimmtes partnerset handeln und eine bestimmte searcharea.
- die Einschränkung auf das partnerset funktioniert (siehe :p0) - die Einschränkung auf das searchArea funktioniert nicht (siehe :p1)
Als Ergebnis erhalte ich alle searchAreas, die für das entsprechende partnerset gefunden werden, ich möchte aber nur ein bestimmtes, nämlich, dass das ich übergebe...
//one-to-many-Beziehung <set name="partnerSetAreaList" lazy="false" inverse="true"> <key> <column name="partnerset_id" not-null="true"/> </key> <one-to-many class="de.hvb.ph.finance.admin.productpartnerset.impl.model.PartnersetAreaEntity"/> </set>
//Select-Abfrage, mit weiteren Einschränkungen auf partnerset und searchArea <query name="PartnersetEntity.findPartnersetBySetAndArea"> <![CDATA[select ps from PartnersetEntity ps inner join ps.partnerSetAreaList al where ps.setId = :p0 and al.searchArea = :p1 order by ps.setId, al.searchArea]]> </query>
Das aus Hibernate generierte SQL-Statement funktioniert, wenn ich es direkt auf Oracle ausführe Hibernate: select partnerset0_.SETID as SETID125_, partnerset0_.VERSION as VERSION125_, partnerset0_.setid as setid125_, partnerset0_.setname as setname125_, partnerset0_.setdescription as setdescr4_125_, partnerset0_.CREATED as CREATED125_, partnerset0_.MODIFIED as MODIFIED125_, partnerset0_.CREATOR as CREATOR125_, partnerset0_.MODIFIER as MODIFIER125_ from PRP_PARTNERSET partnerset0_ inner join PRP_PARTNERSET_AREA partnerset1_ on partnerset0_.SETID=partnerset1_.partnerset_id where partnerset0_.SETID=? and partnerset1_.SEARCHAREA=? order by partnerset0_.SETID, partnerset1_.SEARCHAREA
Die Parameter, die übergeben werden. 16:30:43,608 TRACE [LongType] binding '137963166' to parameter: 1 16:30:43,608 TRACE [LongType] binding '0' to parameter: 2 16:30:43,608 TRACE [LongType] returning '137963166' as column: SETID125_
Und das ist was ich als Ergebnis bekomme: --> ich frage aber doch nach searchArea = 0 ab, warum erhalte ich alle nur möglichen searchAreas, die für dieses partnerset in der Datenbank vorliegen... TestArea:de.hvb.ph.finance.admin.productpartnerset.impl.model.PartnersetAreaEntity@8f5f2e[id=1212,partnersetId=137963166,searchArea=2,modified=2010-03-24 15:16:38.0,created=2010-03-24 15:16:38.0,creatorId=177221420,modifierId=177221420,version=0]
TestArea:de.hvb.ph.finance.admin.productpartnerset.impl.model.PartnersetAreaEntity@1f76ed6[id=254694307,partnersetId=137963166,searchArea=0,modified=2010-03-24 15:16:38.0,created=2010-03-24 15:16:38.0,creatorId=177221420,modifierId=177221420,version=0,
TestArea:de.hvb.ph.finance.admin.productpartnerset.impl.model.PartnersetAreaEntity@18dd4d2[id=254694240,partnersetId=137963166,searchArea=1,modified=2010-03-24 15:16:38.0,created=2010-03-24 15:16:38.0,creatorId=177221420,modifierId=177221420,version=0,
Es wäre toll, wenn mir jemand von Euch dabei helfen könnte, da ich jetzt schon ewig sitze und Hibernate nicht mehr verstehe.
Viele Grüße + Vielen Dank
|