mysql - Play Framework CRUD search issue -


when trying search on entities in crud module of play i'm getting exception:

    play.exceptions.javaexecutionexception: org.hibernate.exception.sqlgrammarexception: not execute query     @ play.mvc.actioninvoker.invoke(actioninvoker.java:290)     @ invocation.http request(play!) caused by: javax.persistence.persistenceexception: org.hibernate.exception.sqlgrammarexception: not execute query     @ org.hibernate.ejb.abstractentitymanagerimpl.convert(abstractentitymanagerimpl.java:1235)     @ org.hibernate.ejb.abstractentitymanagerimpl.convert(abstractentitymanagerimpl.java:1168)     @ org.hibernate.ejb.queryimpl.getresultlist(queryimpl.java:250)     @ play.db.jpa.jpaplugin$jpamodelloader.fetch(jpaplugin.java:431)     @ controllers.crud$objecttype.findpage(crud.java:253)     @ controllers.crud.list(crud.java:36)     @ play.mvc.actioninvoker.invokecontrollermethod(actioninvoker.java:413)     @ play.mvc.actioninvoker.invokecontrollermethod(actioninvoker.java:408)     @ play.mvc.actioninvoker.invoke(actioninvoker.java:182)     ... 1 more caused by: org.hibernate.exception.sqlgrammarexception: not execute query     @ org.hibernate.exception.sqlstateconverter.convert(sqlstateconverter.java:92)     @ org.hibernate.exception.jdbcexceptionhelper.convert(jdbcexceptionhelper.java:66)     @ org.hibernate.loader.loader.dolist(loader.java:2452)     @ org.hibernate.loader.loader.listignorequerycache(loader.java:2192)     @ org.hibernate.loader.loader.list(loader.java:2187)     @ org.hibernate.loader.hql.queryloader.list(queryloader.java:452)     @ org.hibernate.hql.ast.querytranslatorimpl.list(querytranslatorimpl.java:363)     @ org.hibernate.engine.query.hqlqueryplan.performlist(hqlqueryplan.java:196)     @ org.hibernate.impl.sessionimpl.list(sessionimpl.java:1258)     @ org.hibernate.impl.queryimpl.list(queryimpl.java:102)     @ org.hibernate.ejb.queryimpl.getresultlist(queryimpl.java:241)     ... 7 more caused by: com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception: unknown column 'charset' in 'where clause'     @ com.mysql.jdbc.util.handlenewinstance(util.java:409)     @ com.mysql.jdbc.util.getinstance(util.java:384)     @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:1054)     @ com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.java:3566)     @ com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.java:3498)     @ com.mysql.jdbc.mysqlio.sendcommand(mysqlio.java:1959)     @ com.mysql.jdbc.mysqlio.sqlquerydirect(mysqlio.java:2113)     @ com.mysql.jdbc.connectionimpl.execsql(connectionimpl.java:2568)     @ com.mysql.jdbc.preparedstatement.executeinternal(preparedstatement.java:2113)     @ com.mysql.jdbc.preparedstatement.executequery(preparedstatement.java:2275)     @ org.hibernate.jdbc.abstractbatcher.getresultset(abstractbatcher.java:208)     @ org.hibernate.loader.loader.getresultset(loader.java:1869)     @ org.hibernate.loader.loader.doquery(loader.java:718)     @ org.hibernate.loader.loader.doqueryandinitializenonlazycollections(loader.java:270)     @ org.hibernate.loader.loader.dolist(loader.java:2449)     ... 15 more 

the odd thing search works entities , not others. example, following entity adding string in search box works:

   @entity public class act extends model {      @transient     private static final int page_size = integer.parseint(play.configuration.getproperty("pagination.size","10"));      @required(message = "act.name.required")     public string name;      @required(message = "act.description.required")     @lob     @maxsize(value=500, message="act.description.maxsize")     public string description;      public blob image;      public boolean showinclosedmode;      @temporal(temporaltype.timestamp)     public date updated;      @required(message = "act.theatre.required")     @manytoone     public theatre theatre;      public boolean disabled;      @onetomany(mappedby="act")     public list<offer> offers;      @manytomany(cascade=cascadetype.persist)     public set<tag> tags;     @transient     public string taglistsupport;      [... methods ...]     } 

but not one:

@entity public class user extends model {      @required(message = "user.name.required")     public string name;     @email(message = "user.email.invalid")     public string email;     public string preflang;     public long prefcity;     public int credits;     public date lastlogin;     @nobinding("profile")     public boolean disabled;     @nobinding("profile")     public boolean admin;     @nobinding("profile")     public boolean anonymous;     @onetomany(mappedby = "owner")     public list<ticket> tickets;     @manytomany     public list<theatre> theatres;     public string googleid;     public string yahooid;     public string facebookid;     public string twitterid;     public string twitter_token;     public string twitter_secret;     public string username;     public string password;     @onetomany(mappedby = "user")     public list<event> history;      [...methods...] } 

any idea why happens?

my guess database using not having table named "user" when don't provide specific name table. know postgres not allow "user" table because "user" keyword. i'm not sure mysql. try adding javax.persistence.table annotation after @entity annotation in user class:

@entity @table(name = "my_user") public class user extends model {     ... } 

where give whatever name want not "user". alternatively (but not tested) may able wrap "user" name in quotes:

@entity @table(name = "\"user\"") public class user extends model {     ... } 

Comments

Popular posts from this blog

php - What is the difference between $_SERVER['PATH_INFO'] and $_SERVER['ORIG_PATH_INFO']? -

fortran - Function return type mismatch -

queue - mq_receive: message too long -