sql - JPA forming query which fails at program running -


i doing following query in jpa:

@namedquery(name = playerskill.delete_all_bot_data,                 query = "delete playerskill s s.player.id " +                         "in (select p.id player p p.team.id " +                         "in (select t.id manager m join m.teaminfo t m.localuserid null))") 

and receiving following exception when calling appropriate dao function, calling jpa named query using executeupdate:

7818 [thread-12] warn  o.h.e.jdbc.spi.sqlexceptionhelper - sql error: 0, sqlstate: 42601 7818 [thread-12] error o.h.e.jdbc.spi.sqlexceptionhelper - error: syntax error @ or near "cross"   position: 30 7828 [thread-12] error c.m.s.threads.serverinitializer - null javax.persistence.persistenceexception: org.hibernate.exception.sqlgrammarexception: not execute statement     @ org.hibernate.ejb.abstractentitymanagerimpl.convert(abstractentitymanagerimpl.java:1387) ~[abstractentitymanagerimpl.class:4.2.8.final]     @ org.hibernate.ejb.abstractentitymanagerimpl.convert(abstractentitymanagerimpl.java:1310) ~[abstractentitymanagerimpl.class:4.2.8.final]     @ org.hibernate.ejb.abstractentitymanagerimpl.throwpersistenceexception(abstractentitymanagerimpl.java:1397) ~[abstractentitymanagerimpl.class:4.2.8.final]     @ org.hibernate.ejb.abstractqueryimpl.executeupdate(abstractqueryimpl.java:111) ~[abstractqueryimpl.class:4.2.8.final]     @ com.magnifi.pennantrace.dao.player.playerskilldao.deletebotteamsdata(playerskilldao.java:25) ~[playerskilldao.class:na]     @ com.magnifi.schedserv.seasonstartend.seasongeneration.deleteallbotrelateddata(seasongeneration.java:1457) ~[seasongeneration.class:na]     @ com.magnifi.schedserv.seasonstartend.seasongeneration.generateseason(seasongeneration.java:109) ~[seasongeneration.class:na]     @ com.magnifi.schedserv.threads.serverinitializer.generateendstart(serverinitializer.java:161) [serverinitializer.class:na]     @ com.magnifi.schedserv.threads.serverinitializer.initsystem(serverinitializer.java:80) [serverinitializer.class:na]     @ com.magnifi.schedserv.threads.schedulerthread.run(schedulerthread.java:38) [schedulerthread.class:na] caused by: org.hibernate.exception.sqlgrammarexception: not execute statement     @ org.hibernate.exception.internal.sqlstateconversiondelegate.convert(sqlstateconversiondelegate.java:123) ~[sqlstateconversiondelegate.class:4.2.8.final]     @ org.hibernate.exception.internal.standardsqlexceptionconverter.convert(standardsqlexceptionconverter.java:49) ~[standardsqlexceptionconverter.class:4.2.8.final]     @ org.hibernate.engine.jdbc.spi.sqlexceptionhelper.convert(sqlexceptionhelper.java:125) ~[sqlexceptionhelper.class:4.2.8.final]     @ org.hibernate.engine.jdbc.spi.sqlexceptionhelper.convert(sqlexceptionhelper.java:110) ~[sqlexceptionhelper.class:4.2.8.final]     @ org.hibernate.engine.jdbc.internal.resultsetreturnimpl.executeupdate(resultsetreturnimpl.java:189) ~[resultsetreturnimpl.class:4.2.8.final]     @ org.hibernate.hql.internal.ast.exec.basicexecutor.doexecute(basicexecutor.java:108) ~[basicexecutor.class:4.2.8.final]     @ org.hibernate.hql.internal.ast.exec.basicexecutor.execute(basicexecutor.java:77) ~[basicexecutor.class:4.2.8.final]     @ org.hibernate.hql.internal.ast.exec.deleteexecutor.execute(deleteexecutor.java:124) ~[deleteexecutor.class:4.2.8.final]     @ org.hibernate.hql.internal.ast.querytranslatorimpl.executeupdate(querytranslatorimpl.java:415) ~[querytranslatorimpl.class:4.2.8.final]     @ org.hibernate.engine.query.spi.hqlqueryplan.performexecuteupdate(hqlqueryplan.java:282) ~[hqlqueryplan.class:4.2.8.final]     @ org.hibernate.internal.sessionimpl.executeupdate(sessionimpl.java:1215) ~[sessionimpl.class:4.2.8.final]     @ org.hibernate.internal.queryimpl.executeupdate(queryimpl.java:116) ~[queryimpl.class:4.2.8.final]     @ org.hibernate.ejb.queryimpl.internalexecuteupdate(queryimpl.java:198) ~[queryimpl.class:4.2.8.final]     @ org.hibernate.ejb.abstractqueryimpl.executeupdate(abstractqueryimpl.java:102) ~[abstractqueryimpl.class:4.2.8.final]     ... 6 common frames omitted caused by: org.postgresql.util.psqlexception: error: syntax error @ or near "cross"   position: 30     @ org.postgresql.core.v3.queryexecutorimpl.receiveerrorresponse(queryexecutorimpl.java:2161) ~[postgresql-9.3-1101.jdbc4.jar:na]     @ org.postgresql.core.v3.queryexecutorimpl.processresults(queryexecutorimpl.java:1890) ~[postgresql-9.3-1101.jdbc4.jar:na]     @ org.postgresql.core.v3.queryexecutorimpl.execute(queryexecutorimpl.java:255) ~[postgresql-9.3-1101.jdbc4.jar:na]     @ org.postgresql.jdbc2.abstractjdbc2statement.execute(abstractjdbc2statement.java:559) ~[postgresql-9.3-1101.jdbc4.jar:na]     @ org.postgresql.jdbc2.abstractjdbc2statement.executewithflags(abstractjdbc2statement.java:417) ~[postgresql-9.3-1101.jdbc4.jar:na]     @ org.postgresql.jdbc2.abstractjdbc2statement.executeupdate(abstractjdbc2statement.java:363) ~[postgresql-9.3-1101.jdbc4.jar:na]     @ org.apache.tomcat.dbcp.dbcp2.delegatingpreparedstatement.executeupdate(delegatingpreparedstatement.java:100) ~[tomcat-dbcp.jar:8.0.3]     @ org.apache.tomcat.dbcp.dbcp2.delegatingpreparedstatement.executeupdate(delegatingpreparedstatement.java:100) ~[tomcat-dbcp.jar:8.0.3]     @ org.hibernate.engine.jdbc.internal.resultsetreturnimpl.executeupdate(resultsetreturnimpl.java:186) ~[resultsetreturnimpl.class:4.2.8.final]     ... 15 common frames omitted 7832 [thread-12] error c.m.s.threads.schedulerthread - null javax.persistence.rollbackexception: transaction marked rollbackonly     @ org.hibernate.ejb.transactionimpl.commit(transactionimpl.java:72) ~[transactionimpl.class:4.2.8.final]     @ com.magnifi.schedserv.threads.schedulerthread.run(schedulerthread.java:39) ~[schedulerthread.class:na] 

the real sql query on exception is:

delete bb_player_skills cross join bb_players player1_ id in (select player2_.id bb_players player2_ player2_.team_id in (select teaminfo4_.id bb_manager manager3_ inner join bb_team_info teaminfo4_ on manager3_.bb_team_info_id=teaminfo4_.id manager3_.local_user_id null)) 

i can't understand why forming query using "cross" says in error log. different table same query works well:

@namedquery(name=playerstat.delete_bot_data,         query = "delete playerstat s s.player.id " +                 "in (select p.id player p p.team.id " +                 "in (select t.id manager m join m.teaminfo t m.localuserid null))") 

and real sql formed query not containing "cross":

delete bb_player_stat bb_players_id in (select player1_.id bb_players player1_ player1_.team_id in (select teaminfo3_.id bb_manager manager2_ inner join bb_team_info teaminfo3_ on manager2_.bb_team_info_id=teaminfo3_.id manager2_.local_user_id null)) 

the relation of tables same also: player skill 1 one players , same player stat

edit: player skills (the 1 cross used) entity:

@json(include=false) private player player;  @id @onetoone(fetch=fetchtype.lazy) @joincolumn(name="bb_players_id", nullable=false) public player getplayer() {     return this.player; } 

and playerstat:

private player player; @onetoone(fetch=fetchtype.lazy) @joincolumn(name="bb_players_id", nullable=false) public player getplayer() {     return this.player; } 

in player entity:

@onetoone(mappedby="player", fetch=fetchtype.lazy, cascade=cascadetype.all)     public playerskill getplayerskill() {         return this.playerskill;     }  @onetoone(mappedby="player", cascade=cascadetype.all)     public playerstat getplayerstats() {         return this.playerstats;     } 


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -