-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 
Author Message
 Post subject: one-to-many where-Constraint wird nicht berücksichtigt
PostPosted: Fri Mar 26, 2010 12:05 pm 
Newbie

Joined: Fri Mar 26, 2010 11:50 am
Posts: 2
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


Top
 Profile  
 
 Post subject: Re: one-to-many where-Constraint wird nicht berücksichtigt
PostPosted: Mon Mar 29, 2010 3:28 am 
Expert
Expert

Joined: Tue Jun 16, 2009 3:36 am
Posts: 990
Quote:
--> 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...


Das ist seltsam.
Was ich nicht verstanden habe:
Bekommt Du dieses seltsame result-set nur wenn du die query über hibernate ausfuehren laesst,
oder bekommst Du dieses seltsame result-set auch wenn Du die query direkt auf Oracle ausführst ?

Im ersteren Fall empfehle ich dir die sql-statements mit p6spy zu loggen,
damit kannst Du kontrollieren ob das parameter-binding korrekt gemacht wird.


Top
 Profile  
 
 Post subject: Re: one-to-many where-Constraint wird nicht berücksichtigt
PostPosted: Mon Mar 29, 2010 8:02 am 
Newbie

Joined: Fri Mar 26, 2010 11:50 am
Posts: 2
Hallo,

vielen Dank. Wenn ich das Statement auf der Datenbank ausführe (Oracle), dann erhalte ich das richtige Ergebnis.
Werde mich einmal mit p6spy auseinandersetzen

Vielen Dank


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.