-->
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.  [ 7 posts ] 
Author Message
 Post subject: Objekt aus mehreren Tabellen erstellen
PostPosted: Mon Jun 12, 2006 7:32 am 
Regular
Regular

Joined: Mon May 22, 2006 8:32 am
Posts: 67
Hallo Forum,
ich benötige Hilfe bei der Formulierung eines Statements.
Ich möchte ein Objekt erstellen, dass sich aus mehreren joins auf mehrere Tabellen zusammensetzt. Das Ergebnis bezieht Attribute aus den 3 verschiedenen Tabellen:

Mapping documents:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="businessObjects.UebersichtTag" table="TCSDBOWNER_GRP_ALW_ACCT">
<id name="id" type="long" column="grp_alw_acct_sk" >
<generator class="increment"/>
</id>

<property name="code">
<column name="code" />
</property>

<property name="nom_date">
<column name="nom_date"/>
</property>

<property name="mi">
<column name="mi"/>
</property>

<property name="upd_ts">
<column name="upd_ts"/>
</property>

<property name="offc_mi">
<column name="offc_mi"/>
</property>

<property name="offc_cnt">
<column name="offc_cnt"/>
</property>

<property name="open_mi">
<column name="open_mi"/>
</property>

<property name="open_cnt">
<column name="open_cnt"/>
</property>

<property name="descr">
<column name="descr"/>
</property>

</class>
</hibernate-mapping>
Full stack trace of any exception that occurs:
111981 [http8080-Processor25] DEBUG org.hibernate.hql.ast.QueryTranslatorImpl - parse() - HQL: Select uebersicht.code,TCSDBOWNER_GRP_ALW_ACCT_BAL.NOM_DATE,TCSDBOWNER_GRP_ALW_ACCT_BAL.MI,TCSDBOWNER_GRP_ALW_ACCT_BAL.UPD_TS,TCSDBOWNER_GRP_ALW_ACCT_BAL.OFFC_MI,TCSDBOWNER_GRP_ALW_ACCT_BAL.OFFC_CNT,TCSDBOWNER_GRP_ALW_ACCT_BAL.OPEN_MI,TCSDBOWNER_GRP_ALW_ACCT_BAL.OPEN_CNT,TCSDBOWNER_EMP_SPRGRP.DESCR from businessObjects.UebersichtTag as uebersicht inner join TCSDBOWNER_GRP_ALW_ACCT_BAL acct on acct.GRP_ALW_ACCT_SK = uebersicht.GRP_ALW_ACCT_SK inner join TCSDBOWNER_EMP_SPRGRP sprgrp on uebersicht.EMP_SPRGRP_SK = sprgrp.EMP_SPRGRP_SK where sprgrp.DESCR = ? order by acct.NOM_DATE
112032 [http8080-Processor25] ERROR hql.parser - *** ERROR: line 1:405: unexpected token: on
112042 [http8080-Processor25] DEBUG hql.parser - line 1:405: unexpected token: on
line 1:405: unexpected token: on
at org.hibernate.hql.antlr.HqlBaseParser.fromClass(HqlBaseParser.java:448)
at org.hibernate.hql.antlr.HqlBaseParser.joinType(HqlBaseParser.java:1418)
at org.hibernate.hql.antlr.HqlBaseParser.fromClause(HqlBaseParser.java:1121)
at org.hibernate.hql.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:785)
at org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:677)
at org.hibernate.hql.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:227)

...
Name and version of the database you are using:
Oracle

The generated SQL (show_sql=true):
"Select "
+"uebersicht.code,"
+"TCSDBOWNER_GRP_ALW_ACCT_BAL.NOM_DATE,"
+"TCSDBOWNER_GRP_ALW_ACCT_BAL.MI,"
+"TCSDBOWNER_GRP_ALW_ACCT_BAL.UPD_TS,"
+"TCSDBOWNER_GRP_ALW_ACCT_BAL.OFFC_MI,"
+"TCSDBOWNER_GRP_ALW_ACCT_BAL.OFFC_CNT,"
+"TCSDBOWNER_GRP_ALW_ACCT_BAL.OPEN_MI,"
+"TCSDBOWNER_GRP_ALW_ACCT_BAL.OPEN_CNT,"
+"TCSDBOWNER_EMP_SPRGRP.DESCR "

+"from "
+"UebersichtTag as uebersicht"

+" inner join "
+"TCSDBOWNER_GRP_ALW_ACCT_BAL acct on "
+"acct.GRP_ALW_ACCT_SK = uebersicht.GRP_ALW_ACCT_SK "
+" inner join "
+"TCSDBOWNER_EMP_SPRGRP sprgrp on "
+"uebersicht.EMP_SPRGRP_SK = sprgrp.EMP_SPRGRP_SK "

+"where "
+"sprgrp.DESCR = ?"

+" order by "
+"acct.NOM_DATE")
Debug level Hibernate log excerpt:

Ist das prinzipiell überhaupt möglich 3 Tabellen abzufragen, um ein Objekt daraus zu erstellen? Wie muss dann die Query aussehen? Kann jemand helfen?

Gruß,

a.k


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jun 13, 2006 4:00 am 
Beginner
Beginner

Joined: Fri May 19, 2006 11:34 am
Posts: 29
Hallo,

dein Problem ist die Syntax der Query. Ein inner join unter Oracle schaut folgendermassen aus:

select a.a, b.b from tableA a, tableB b where a.a=b.b;

Dann sollte auch deine Query tun.

Viele Grüsse
Kai


Top
 Profile  
 
 Post subject: Objekt aus mehreren Tabellen erstellen
PostPosted: Fri Jun 16, 2006 4:04 am 
Regular
Regular

Joined: Mon May 22, 2006 8:32 am
Posts: 67
Hi-ho,
AlRudi wrote:

dein Problem ist die Syntax der Query. Ein inner join unter Oracle schaut folgendermassen aus:

select a.a, b.b from tableA a, tableB b where a.a=b.b;

Kai


Jetzt gehts! Danke! Ist es denn prinzipiell möglich ein Objekt aus mehreren Tabellen zu erstellen?

Gruß,

a.k.


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jun 16, 2006 4:09 am 
Beginner
Beginner

Joined: Fri May 19, 2006 11:34 am
Posts: 29
Anfürsich musst du die Query entsprechend erweitern:

select a.a, b.b, c.c from tableA a, tableB b, tableC c where a.a=b.b and b.b=c.c;

Viele Grüsse
Kai


Top
 Profile  
 
 Post subject: Objekt aus mehreren Tabellen erstellen
PostPosted: Fri Jun 16, 2006 4:22 am 
Regular
Regular

Joined: Mon May 22, 2006 8:32 am
Posts: 67
AlRudi wrote:
Anfürsich musst du die Query entsprechend erweitern:

select a.a, b.b, c.c from tableA a, tableB b, tableC c where a.a=b.b and b.b=c.c;


Ist das die Antwort auf meine Frage? Dann verstehe ich das nicht.
Ich möchte mit der Query und dem Join drei Tabellen abfragen und das auf ein POJO mappen. Also hat mein POJO alle Attribute des Select-Statements. Geht das?

Gruß,

a.k.


Top
 Profile  
 
 Post subject: Re: Objekt aus mehreren Tabellen erstellen
PostPosted: Fri Jun 16, 2006 4:37 am 
Beginner
Beginner

Joined: Thu Apr 21, 2005 5:37 am
Posts: 45
Location: Switzerland
barnti wrote:
Ich möchte mit der Query und dem Join drei Tabellen abfragen und das auf ein POJO mappen. Also hat mein POJO alle Attribute des Select-Statements.


Ich glaube dann müsste deine Mapping-Datei die drei Tabellen auf eine Klasse mappen. Schau dir dazu mal http://www.hibernate.org/hib_docs/v3/reference/en/html/mapping.html#mapping-declaration-joinedsubclass an


Top
 Profile  
 
 Post subject: Objekt aus mehreren Tabellen erstellen
PostPosted: Fri Jun 16, 2006 6:01 am 
Regular
Regular

Joined: Mon May 22, 2006 8:32 am
Posts: 67
Hi,

ist das so? Gibt es keine "einfache" Möglichkeit? Ich brauche dieses Objekt nur zum Lesen bzw. Darstellung. Schreiben in den zugehörigen Tabellen ist nicht notwendig. Kann mir das jemand beispielhaft darstellen?

Danke und Gruß,

a.k.


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