facebook

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException

  1. MyEclipse IDE
  2.  > 
  3. Java EE Development (EJB, JSP, Struts, XDoclet, etc.)
Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #267168 Reply
    org.hibernate.exception.SQLGrammarException: could not load an entity: [com.deth.hibernate.EchoMessage#1]
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    .............................................................................
    Caused by: com.mysql.jdbc.exceptions.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 '.echo_message echomessag0_ where echomessag0_.id=1' at line 1
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2941)
    .............................................................................

    Im following the Hibernate tutorial of MyEclipse help. And I get an error that I spent lots of time to fix it. Im using MySQL 5.0, Windoze XP2, MyEclipse 5.1 GA and Tomcat 6.0. Here are the files which I coded:
    1. EchoMessage.hbm.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- 
        Mapping file autogenerated by MyEclipse - Hibernate Tools
    -->
    <hibernate-mapping>
        <class name="com.deth.hibernate.EchoMessage" table="echo_message" catalog="lathong">
            <id name="id" type="java.lang.Integer">
                <column name="id" precision="22" scale="0"/>
                <generator class="assigned"/>
            </id>
            <property name="message" type="java.lang.String">
                <column name="Message" not-null="true" />
            </property>
        </class>
    </hibernate-mapping>

    2. EchoMessageAction.java

    package com.deth.struts.action;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.hibernate.HibernateException;
    
    import com.deth.hibernate.EchoMessage;
    import com.deth.hibernate.EchoMessageDAO;
    
    import deth.utilities.AbstractBean;
    
    public class EchoMessageAction extends Action{
    
        private static final String ECHO = "echo";
        private java.util.List list;
        
        public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response)throws Exception{
            
            EchoMessageDAO dao = new EchoMessageDAO();        
            try{
                EchoMessage instance = dao.findById(new Integer(1));        
                String message = instance.getMessage();
                System.out.println("message = " + message);
                
                request.setAttribute(ECHO, list.add(message));
            }
            catch (HibernateException he) {
                he.printStackTrace();
            }
            finally{
                try{
                    dao.getSession().close();
                }
                catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return mapping.findForward(AbstractBean.SUCCESS);
        }    
    }

    If you mind showing me the answer. Thank you so much.

    #267208 Reply

    Riyad Kalla
    Member

    Can you add a property “show_sql” to your hibernate.cfg.xml file and set it’s value to “true” and re-run your app, then right before the error, look for the actual SQL that Hibernate is trying to execute?

    Also can you generate the DDL from your table using the DB tool and post it here for me to look at?

    #267222 Reply

    Thanx, I got my error. It was so strange, the table named users which I created from MySQL database, then in HQL in made a select statement like this: FROM users. It returned error. But I changed the syntax to SELECT Users, it was okie. What fun.

    Anyway, thank for your enthusiasm. This is an useful forum in which I received the anwsers quickly. That is so different from ohers.
    Best regars, Khoa.

    #267225 Reply

    Riyad Kalla
    Member

    Khoa, nice catch, actually HQL requires you use Object names, not the table names, which is why you had to use “Users” with a capital.

    I’ve tripped up on that one more than a enough times myself.

    #268549 Reply

    bilis
    Member

    try removing –catalog=”lathong”– from your autogenerated mapping hbm file, at least that work for me 🙂

    #268837 Reply

    dkim18
    Member

    Hi,

    I am trying to excute very simple hql.
    +++++++++++++++++++++++++++++

    public class ResidencyDAOImpl extends HibernateDaoSupport implements ResidencyDAO{


    public void printResidencyTable(){
    Session session = getSession();

    String hqlStr =”FROM Person”;
    Query query = getSession().createQuery(hqlStr);
    System.out.println(“query: ” + query);

    List list = query.list();

    but I have this error.

    Hibernate: select person0_.id as id, person0_.version_num as version2_6_, person0_.family_name as family3_6_, person0_.given_name as given4_6_, person0_.relocate as relocate6_ from jhu786..person person0_
    Exception in thread “main” org.hibernate.exception.GenericJDBCException: could not execute query
    at org.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:92)
    at org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:80)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    at org.hibernate.loader.Loader.doList(Loader.java:1565)
    at org.hibernate.loader.Loader.list(Loader.java:1545)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:840)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
    at edu.jhu.jhu786.hib.ResidencyDAOImpl.printResidencyTable(ResidencyDAOImpl.java:60)
    at edu.jhu.jhu786.hib.TestDriver.main(TestDriver.java:72)
    Caused by: com.mysql.jdbc.exceptions.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 ‘.person person0_’ at line 1
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)

    +++++++++++++++++++++++

    This used to work befor.

    any idea?

    thx,

    p.s.

    there were two dots btween “jhu786..person” and this is causing this problem, but i don’t know why it is putting two dots.

Viewing 6 posts - 1 through 6 (of 6 total)
Reply To: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException

You must be logged in to post in the forum log in