[hibernate-issues] [Hibernate-JIRA] Created: (EJB-379) org.hibernate.exception.SQLGrammarException when trying to delete THIS where THIS.relation[manyToOne].member=:givenMember

Martin Makundi (JIRA) noreply at atlassian.com
Sun Aug 31 05:17:40 EDT 2008


org.hibernate.exception.SQLGrammarException when trying to delete THIS where THIS.relation[manyToOne].member=:givenMember
-------------------------------------------------------------------------------------------------------------------------

                 Key: EJB-379
                 URL: http://opensource.atlassian.com/projects/hibernate/browse/EJB-379
             Project: Hibernate Entity Manager
          Issue Type: Bug
    Affects Versions: 3.3.2.GA
         Environment: MySQL 5 or newer
            Reporter: Martin Makundi
            Priority: Critical


The delete fails and throws org.hibernate.exception.SQLGrammarException when trying to issue delete:

createQuery("DELETE FROM " 
+ TheClassIWantToDelete.class.getSimpleName() + " mhl WHERE " 
          + "mhl.theBridgingClass.theSelectingClass=:theSelectingClass" 
          + " AND (mhl.value=0 OR mhl.value IS NULL)")
          .setParameter("theSelectingClass", theSelectingClass);

I have three Entities:

@Entity
public class TheClassIWantToDelete{
    @Id Long id;
    @ManyToOne(optional=false)
    private TheBridgingClass theBridgingClass;
    @Column
    private Integer value;
   ...
}

@Entity
public class TheBridgingClass{
    @Id Long id;
    @ManyToOne(optional=false)
    private TheSelectingClass theSelectingClass;
   ...
}

@Entity
public class TheSelectingClass{
    @Id Long id;
    ...
}

The result is (trace):
Hibernate: delete from TheClassIWantToDelete, TheBridgingClass theBridgingCl1_ where theSelectingClass_id=? and (value=0 or value is null)
2008-08-31 12:00:00,912 59846 [btpool0-3] ERROR JDBCExceptionReporter  - 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 'where theSelectingClass_id=5 and (value=0 or value is null)' at line 1

java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute update query
	at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:637)
	at org.hibernate.ejb.QueryImpl.executeUpdate(QueryImpl.java:58)
Caused by: org.hibernate.exception.SQLGrammarException: could not execute update query
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.hql.ast.exec.BasicExecutor.execute(BasicExecutor.java:84)
	at org.hibernate.hql.ast.QueryTranslatorImpl.executeUpdate(QueryTranslatorImpl.java:396)
	at org.hibernate.engine.query.HQLQueryPlan.performExecuteUpdate(HQLQueryPlan.java:259)
	at org.hibernate.impl.SessionImpl.executeUpdate(SessionImpl.java:1141)
	at org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:94)
	at org.hibernate.ejb.QueryImpl.executeUpdate(QueryImpl.java:49)
	... 38 more
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 'where project_id=5 and (monthlyHoursLimit=0 or monthlyHoursLimit is null)' at line 1
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2941)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:3249)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1268)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1541)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1455)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1440)
	at org.hibernate.hql.ast.exec.BasicExecutor.execute(BasicExecutor.java:75)
	... 43 more


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the hibernate-issues mailing list