[Hibernate] fout in gegenereerde query

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08 23:34
Ik zit nu al een halve dag op een hibernate exception te zoeken, maar ik kan de oplossing maar niet vinden. De exception is devolgende:

code:
1
2
3
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'as'.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(Unknown Source)


Deze foutmelding zegt natuurlijk genoeg om de oplossing te vinden. Het probleem is dat volgens mij mijn query correct zou moeten zijn. De mapping files worden natuurlikj ook correct ingelezen.

Een snookerclub bevat meerdere members. Een member kan slechts lid zijn van 1 snookerclub

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<hibernate-mapping>
    <class name="domain.Snookerclub" table="SNOOKERCLUBS">
        <id name="id" column="SNOOKERCLUB_ID">
            <generator class="native" />            
        </id>
    
        <property name="name" column="NAME" type="java.lang.String" />
        <property name="address" column="ADDRESS" type="java.lang.String" />
        
        <set name="members" inverse="true">
            <key column="SNOOKERCLUB_ID" />
            <one-to-many class="domain.Player" />
        </set>
    </class>
</hibernate-mapping>

<hibernate-mapping>
    <class name="domain.Player" table="PLAYERS">
        <id name="id" column="PLAYER_ID">
            <generator class="native"></generator>
        </id>
        
        <property name="name" column="NAME" type="java.lang.String" length="25" />
        
        <many-to-one name="snookerclub" column="SNOOKERCLUB_ID" not-null="true" />
        
    </class>
</hibernate-mapping>


Hieronder de query die ik wil uitvoeren

code:
1
2
SELECT NEW Snookerclub(sc.id, sc.name, sc.address, sc.members) 
FROM Snookerclub sc


en deze wordt omgezet naar het volgende stukje SQL:
select snookerclu0_.SNOOKERCLUB_ID as col_0_0_, snookerclu0_.NAME as col_1_0_, snookerclu0_.ADDRESS as col_2_0_, . as col_3_0_
from SNOOKERCLUBS snookerclu0_
inner join PLAYERS members1_ on nookerclu0_.SNOOKERCLUB_ID=members1_.SNOOKERCLUB_ID
Zoals je kan zijn in het vet, wordt de collection (sc.members) niet omgezet naar SQL, maar wordt er gewono een "." gezet. Vandaar dus de exception. Maar ik weet totaal niet wat de oorzaak is van de verkeerd gegenereerde SQL query?

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 19:58

momania

iPhone 30! Bam!

Moet je niet gewoon
code:
1
2
SELECT NEW Snookerclub(sc.id, sc.name, sc.address) 
FROM Snookerclub sc

doen ?

Daarna gewoon de members lazy ophalen via getMembers() :)

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08 23:34
Ah natuurlijk, dat is nog een betere oplossing. |:(

Bedankt :)

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.