[2.1-JPA] Exception when using the Query

231 views
Skip to first unread message

Alex Zhang@GCXA

unread,
Dec 13, 2012, 9:00:19 PM12/13/12
to play-fr...@googlegroups.com
Hi Guys,

My project worked well on the 2.0, but I met an exception "[IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: xxx is not mapped [select v from Title v where original_folder=:folder and original_file_name=:name]]"


my application.conf like below:
...
# Database configuration
# ~~~~~
# You can declare as many datasources as you want.
# By convention, the default datasource is named `default`
#
db
.default.driver=com.mysql.jdbc.Driver
db
.default.url="jdbc:mysql://localhost:3306/manager"
db
.default.user=root
db
.default.password=password
jpa
.default=ManagerPU

#
# You can expose this datasource via JNDI if needed (Useful for JPA)
db
.default.jndiName=DefaultDS

# Evolutions
# ~~~~~
# You can disable evolutions if needed
# evolutionplugin=disabled
...



The entity class as :
package my.manager.model;

@Entity
@Table(name = "title")
public class Title {
   
@Id
   
@Column(name="content_id")
   
private String contentId;

   
@Column(nullable = false, name="original_folder")
   
private String originalFolder;

   
@Column(nullable = false, name="original_file_name")
   
private String originalFileName;

   
public String getOriginalFileName() {
       
return originalFileName;
   
}

   
public void setOriginalFileName(String originalFileName) {
       
this.originalFileName = originalFileName;
   
}

   
public String getOriginalFolder() {
       
return originalFolder;
   
}

   
public void setOriginalFolder(String originalFolder) {
       
this.originalFolder = originalFolder;
   
}

   
public String getContentId() {
       
return contentId;
   
}

   
public void setContentId(String contentId) {
       
this.contentId = contentId;
   
}
}



The persistence.xml as
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             
version="2.0">
             
   
<persistence-unit name="ManagerPU" transaction-type="RESOURCE_LOCAL">
       
<provider>org.hibernate.ejb.HibernatePersistence</provider>
       
<non-jta-data-source>DefaultDS</non-jta-data-source>
       
<properties>
           
<property name="hibernate.show_sql" value="true" />
           
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
           
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
       
</properties>
   
</persistence-unit>    
</persistence>



I googled the related same issue, and add the "<class>my.manager.model.Title</class>" to the persistence.xml as some posts said.
However, another exception occured,
...
Caused by: java.lang.ExceptionInInitializerError: null
        at controllers
.Dashboard.test(Dashboard.java:49) ~[na:na]
        at
Routes$$anonfun$routes$1$$anonfun$applyOrElse$5$$anonfun$apply$5.apply(routes_routing.scala:113) ~[na:na]
        at
Routes$$anonfun$routes$1$$anonfun$applyOrElse$5$$anonfun$apply$5.apply(routes_routing.scala:113) ~[na:na]
        at play
.core.Router$HandlerInvoker$$anon$6$$anon$1.invocation(Router.scala:141) ~[play_2.10.jar:2.1-RC1]
        at play
.core.j.JavaAction$$anon$1.call(JavaAction.scala:29) ~[play_2.10.jar:2.1-RC1]
        at play
.core.j.JavaAction$$anon$2.apply(JavaAction.scala:72) ~[play_2.10.jar:2.1-RC1]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: ManagerPU] class or package not found
        at org
.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1401) ~[hibernate-entitymanager-4.1.8.Final.jar:4.1.8.F
inal
]
        at org
.hibernate.ejb.Ejb3Configuration.addClassesToSessionFactory(Ejb3Configuration.java:1184) ~[hibernate-entitymanager-4.1.8.Final.jar:4.1.8
.Final]
        at org
.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1048) ~[hibernate-entitymanager-4.1.8.Final.jar:4.1.8.Final]
        at org
.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:291) ~[hibernate-entitymanager-4.1.8.Final.jar:4.1.8.Final]
        at org
.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:373) ~[hibernate-entitymanager-4.1.8.Final.jar:4.1.8.Final]
        at org
.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56) ~[hibernate-entitymanager-4.1.8.Final.jar:4
.1.8.Final]
Caused by: java.lang.ClassNotFoundException: com.lifeway.cp.manager.model.Title
        at java
.net.URLClassLoader$1.run(Unknown Source) ~[na:1.7.0]
        at java
.net.URLClassLoader$1.run(Unknown Source) ~[na:1.7.0]
        at java
.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0]
        at java
.net.URLClassLoader.findClass(Unknown Source) ~[na:1.7.0]
        at java
.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.7.0]
        at java
.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.7.0]



Dose anyone meet same issue like me, or, please give me some advice, thanks a lot.

Alex Zhang@GCXA

unread,
Dec 13, 2012, 9:04:14 PM12/13/12
to play-fr...@googlegroups.com
Sorry, the last error should be:
...
Caused by: java.lang.ClassNotFoundException: my.manager.Title

        at java
.net.URLClassLoader$1.run(Unknown Source) ~[na:1.7.0]
        at java
.net.URLClassLoader$1.run(Unknown Source) ~[na:1.7.0]
        at java
.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0]
        at java
.net.URLClassLoader.findClass(Unknown Source) ~[na:1.7.0]
        at java
.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.7.0]
        at java
.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.7.0]

...

Alex Zhang@GCXA

unread,
Dec 13, 2012, 10:42:33 PM12/13/12
to play-fr...@googlegroups.com
[Append]

I found if use the JPA.em(), it works, but if I created the EntityManagerFactory and EntityManage by myself, the exception occurred as I mentioned.

Code for controller
    @Transactional(readOnly=true)
   
public static Result test() {
//        EntityManagerFactory factory = Persistence.createEntityManagerFactory("ManagerPU");
//        EntityManager em = factory.createEntityManager();
//        Title t = new Title("folder", "file");
//        t.setContentId(UUID.create());
//        em.getTransaction().begin();
//        em.persist(t);
//        em.getTransaction().commit();
       
//        JPA.em().getTransaction().begin();
//        JPA.em().persist(t);
//        JPA.em().getTransaction().commit();
       
       
       
List titles = JPA.em().createQuery("select v from Title v where original_folder=:folder and original_file_name=:name")
               
.setParameter("folder", "folder").setParameter("name", "file")
               
.getResultList();
       
       
return ok("ok");
   
}


Reply all
Reply to author
Forward
0 new messages