-->
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.  [ 2 posts ] 
Author Message
 Post subject: Probleme beim Suchen (could not execute query)
PostPosted: Tue Dec 20, 2011 9:07 am 
Newbie

Joined: Thu Oct 27, 2011 2:07 pm
Posts: 2
Hi!

Ich habe folgendes Problem, ich habe in einem Objekt (Typ) ein Set angelegt und den mehrere(0 .. n) Einträge (Lektoren) stehen. das Eintragen dieser Lektoren klappt auch wunderbar mittels des Hibernate-Generic-DAO (http://code.google.com/p/hibernate-generic-dao/). Nun versuche ich einen Typ zu finden der genau die ausgewählten Lektoren hält. Dies geschieht bei dem Framework mittels einer Filter Klasse die einem Search-Objekt mitgegeben wird, dieses Verfahren ist analog zu dem mit Criterias die direkt über die Session angesprochen werden (Habe ich versucht selber Fehler). Daher bin ich der Meinung, dass mein Mapping nicht in Ordnung sein kann.

Hier die Typ.hmb.xml (nicht verwirren lassen Uebersetzer & Dolmetscher funktionieren genau wie der Lektor, wurden aber aus der Fragestellung aus Vereinfachungsgründen gestrichen)

Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 03.11.2011 19:23:24 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping default-lazy="false">
<class name="core.models.typ.Typ" table="TYP">
  <id access="field" name="ID" type="int">
   <column name="ID"/>
   <generator class="increment"/>
  </id>
  <set name="mitarbeiter" sort="unsorted" table="MITARBEITER">
   <key>
    <column name="ID"/>
   </key>
   <one-to-many class="core.models.Mitarbeiter"/>
  </set>
  <set cascade="all" name="uebersetzungen" sort="unsorted" table="TYP_UEBERSETZUNGEN">
   <key column="TYP_ID"/>
   <many-to-many class="core.models.sprache.Uebersetzung"
    column="UEBERSETZUNG_ID" unique="true"/>
  </set>
  <set cascade="all" name="lektorat" sort="unsorted" table="TYP_LEKTORAT">
   <key column="TYP_ID"/>
   <many-to-many class="core.models.sprache.Lektorat"
    column="LEKTOREN_ID" unique="true"/>
  </set>
  <set cascade="all" name="dolmetscher" sort="unsorted" table="TYP_DOLMETSCHER">
   <key column="TYP_ID"/>
   <many-to-many class="core.models.sprache.Dolmetscher"
    column="DOLMETSCHER_ID" unique="true"/>
  </set>
</class>
</hibernate-mapping>


und hier die Lektorat.hbm.xml

Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 18.11.2011 19:59:00 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping default-lazy="false">
<class name="core.models.sprache.Lektorat" table="LEKTORAT">
  <id name="id" type="int">
   <column name="ID"/>
   <generator class="increment"/>
  </id>
  <many-to-one cascade="all" class="core.models.sprache.Sprache"
   fetch="join" name="sprache">
   <column name="SPRACHE"/>
  </many-to-one>
  <property generated="never" lazy="false" name="vereidigt" type="yes_no">
   <column name="VEREIDIGT"/>
  </property>
</class>
</hibernate-mapping>


Das heißt bildlich gesprochen, dass ein Lektor über die Assoziations-Tabelle TYP_LEKTORAT mit seinem zugehörigen Typen verbunden ist.

Das das mit den default-lazy-loading nicht die feine Englische Art ist weiß ich auch, aber wurde erstmal aus Bequemlichkeit eingeführt :-)

Wenn ich jetzt versuche die Suche laufen zu lassen bekomme ich folgendes SQL Query

Code:
select typ0_.ID as ID6_ from TYP typ0_, TYP_LEKTORAT lektorat1_, LEKTORAT lektorat2_ where typ0_.ID=lektorat1_.TYP_ID and lektorat1_.LEKTOREN_ID=lektorat2_.ID and .=?


Woher stammt das
Quote:
.=?
?

Das diesen Fehler verursacht

Code:
java.sql.SQLSyntaxErrorException: Syntax error: Encountered "." at line 1, column 164.


Da der Lektor ja noch ein Sprachen-Objekt hält müsste er ja jetzt nur noch die Sprache auf Identität überprüfen, tut dies aber nicht, wieso?

Würde mich über eine Antwort sehr freuen, da ich echt fest stecke.

Gruß Dennis


Top
 Profile  
 
 Post subject: Re: Probleme beim Suchen (could not execute query)
PostPosted: Tue Jan 10, 2012 4:43 am 
Expert
Expert

Joined: Thu Jan 08, 2009 6:16 am
Posts: 661
Location: Germany
Von welchem Framwork sprichst du, welches Analog zu Criteria funktioniert? Hört sich nach einem Fehler darin an?

Ich würde an deiner Stelle einfach eine NamedQuery verwenden:
Code:
select distinct t from Typ t join t.lektorat l where l.id in (:lektoratIds)

oder
Code:
select distinct t from Typ t join t.lektorat l where l.id in (select l2.id from Lektorat l2 where [hier beliebige Filter])

_________________
-----------------
Need advanced help? http://www.viada.eu


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 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.