Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Spring/hibernate] BadSqlGrammarException *

Pagina: 1
Acties:
  • 197 views sinds 30-01-2008
  • Reageer

  • chrisO
  • Registratie: Mei 2003
  • Laatst online: 10:18
Ik heb een uitgebreid complex project terug gebracht naar een eenvoudig project met slects 1 module/controller en een database met slechts 1 tabel. Dit simpele project moet gaan dienen om nieuwe 'ideeen' in uit te proberen, maar het eenvoudige project geeft een stacktrace, iets wat het complexe project niet doet, dat werkt gewoon...terwijl de basis van de hibernate configuratie voor beide applicaties identiek is... wat gaat hier dus mis?

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
29
30
org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not insert: [app.admin.core.Person]; bad SQL grammar [insert into person (firstname, surname, email) values (?, ?, ?)]; nested exception is java.sql.SQLException: 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 'person (firstname, surname, email) values ('Chris', 'test', 'test@email')' at line 1
    org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:225)
    org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
    org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:411)
    org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:371)
    org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:614)
    nl.obsis.app.admin.db.AdminDaoHibernate.registerKill(AdminDaoHibernate.java:14)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:288)
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:165)
    $Proxy1.registerPerson(Unknown Source)
    app.admin.core.AdminManager.registerPerson(AdminManager.java:20)
    app.admin.AdminController.database(AdminController.java:25)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:433)
    org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:371)
    org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:45)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:796)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:727)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:350)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


hibernate mapping is als volgt:
code:
1
2
3
4
5
6
7
8
9
10
<hibernate-mapping auto-import="true" default-lazy="false">
<class name="app.admin.core.Person" table="Person">
        <id name="id" column="id" unsaved-value="-1" type="java.lang.Integer">
            <generator class="identity"/>
        </id>
        <property name="firstname" column="firstname" type="java.lang.String"/>
        <property name="surname" column="surname" type="java.lang.String"/>
        <property name="email" column="email" type="java.lang.String"/>
    </class>
</hibernate-mapping>


Op google en het Spring forum vind ik bij SQL Grammer blijkt de oorzaak altijd te liggen bij een fout in de SQL statement, maar die wordt hier gegenereerd door hibernate...

  • Kettrick
  • Registratie: Augustus 2000
  • Laatst online: 20-11 21:44

Kettrick

Rantmeister!

Komt de SQL die hibernate naar mysql duwt naar voren in je logfiles, misschien handig om dat even te posten ?

Verwijderd

Is je column id wel aangemaakt met een auto increment veld?

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 20-11 11:45

Salandur

Software Engineer

het enige wat me zo snel even opvalt is dat in je mapping de table name met een hoofdletter is in in je foutmelding niet. maar ik zou eens kijken naar de tabel in de database of die wel goed gecreeerd is

Assumptions are the mother of all fuck ups | iRacing Profiel


  • chrisO
  • Registratie: Mei 2003
  • Laatst online: 10:18
De sql die hibernate naar mySQL duwt komt niet terug in de logfile...je ziet enkel dezelfde sql als in de exception.

of autoincrement wel de column id aanmaakt kan ik niet zien, maar als ik me goed herinner krijg je in zo'n geval een ander exception.

en het hoofdletter / geen hoofdletter komt niet ter sprake in de source code...is enkel een gevalletje niet exact correct over typen tijdens het maken van dit topic.

Ik heb zelf nu het vermoeden dat het in de gebruikte libraries zit, dat een verkeerde combinatie van jar's voor het probleem zorgt. dus dat ga ik nu even testen...

Verwijderd

Gesjoemel met jar files lijkt op niets gebaseerd. De gefaalde sql staat simpelweg in stackstrace. Heb je die sql al eens direct met een sql tool proberen uit te voeren?

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 20-11 11:45

Salandur

Software Engineer

waarop draait je software? in de zien van application server/standalone etc.

Assumptions are the mother of all fuck ups | iRacing Profiel


  • chrisO
  • Registratie: Mei 2003
  • Laatst online: 10:18
Verwijderd schreef op donderdag 17 januari 2008 @ 14:26:
Gesjoemel met jar files lijkt op niets gebaseerd. De gefaalde sql staat simpelweg in stackstrace. Heb je die sql al eens direct met een sql tool proberen uit te voeren?
De gedachte dat het aan de jar files ligt komt van het feit dat ik voor deze minimale applicatie de nieuwste versies van alle libraries mbv Maven heb binnengehaald ipv dezelfde libraries te gebruiken die in de originele versie van de applicatie gebruikt worden.

De applicatie draait als webapplicatie op Tomcat

Ok...Mark had gelijk het lag niet aan de jar files en ik heb een werkende 2e minimale applicatie verkregen opzelfde manier als ik de 1e gemaakt heb...de 2e werkt wel en de eerste niet... en na wat geswitch van libraries en config files ben ik er achter gekomen dat het of de hibernate mapping is of de database zelf de oorzaak is.

[ Voor 22% gewijzigd door chrisO op 17-01-2008 15:37 ]

Pagina: 1