-->
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: Aus HQL-Statement falsches SQL-Statement generiert -> Error
PostPosted: Thu Sep 30, 2010 4:10 am 
Newbie

Joined: Wed Sep 22, 2010 6:56 am
Posts: 6
Ich sitz seit gestern vor diesem Problem und hab schon an vielen Stellen nach Lösungen gesucht, aber nichts passendes gefunden. Um bei der Datenbank-Anbindung auf Hibernate umzustellen, hab ich ein vorhandenes SQL-Statement in ein HQL-Statement angepasst.

Abfrage via Hibernate mit loadAll(User.class); funktiert, nur dieses jetzt nicht.

Mein HQL-Statement sieht so aus:
Code:
public List<User> getWarnungen(String name){
    return getHibernateTemplate().findByNamedParam(
         "select u.uname, count(m.mid) as warn
          FROM Meldungen as m, MeldungInfo as mi, User as u
          WHERE m.uid=u.id AND u.uname=:name AND m.mid=mi.id AND mi.typ=2
          group by uid", "name", name);
}

Und daraus wird dann:
Code:
Hibernate:
    select
        user2_.uname as col_0_0_,
        count(meldungen0_.mid) as col_1_0_
    from
        meldungen meldungen0_,
        meldungen-info meldunginf3_,   //Woher kommt das?
        meldungen-info meldunginf1_,
        user user2_
    where
        meldungen0_.mid=meldunginf3_.id    //Woher kommt das?
        and meldungen0_.uid=user2_.id
        and user2_.uname=?
        and meldungen0_.mid=meldunginf1_.id
        and meldunginf1_.typ=2
    group by
        uid


Hängt das eventuell an meinem Mapping?
Wenn ja, könnte ich was aus dem HQL-Statement weglassen oder kann ich das Mapping weglassen?

Mapping in Meldungen.java:
Code:
[...]
public class Meldungen implements Serializable {

    private Integer id;
    private Date timestamp;
    private User uid;
    private MeldungInfo mid;

    public Meldungen(){
       
    }
[...]
    @OneToOne
    @JoinColumn(name="mid")
    public MeldungInfo getMid() {
        return mid;
    }
[...]
}

Oder ist mein Mapping falsch?

Wäre über Hilfe dankbar.

Edit: ich kann die Anwendung starten, aber wenn ich Methode getWarnungen() aufrufe wird das HQL in SQL umgewandelt aber ich erhalte folgende Fehlermeldung:
Quote:
MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-info meldunginf3_, meldungen-info meldunginf1_, user user2_ where meldungen0_.m' at line 1

Deswegen ist mir das mit der "falschen" Umwandlung auch erst aufgefallen


Top
 Profile  
 
 Post subject: Re: Aus HQL-Statement falsches SQL-Statement generiert -> Error
PostPosted: Mon Oct 04, 2010 2:59 am 
Newbie

Joined: Wed Sep 22, 2010 6:56 am
Posts: 6
Endlich, hab den Fehler gefunden. Das ganze lag an der "intelligenten" Bennung der Tabellen..
aus
Code:
@Entity
@Table(name="meldungen-info")
public class MeldungInfo implements Serializable{...}

wurde
Code:
@Entity
@Table(name="`meldungen-info`")
public class MeldungInfo implements Serializable{...}


mit Hilfe dieses "Tricks" setzt Hibernate dann auch in seiner Abfrage
Quote:
`meldungen-info`
und hat kein Problem mehr mit dem "-"


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.