在查询entitymanager时需要避免使用“在PersistenceUnit中”

时间:2013-09-05 09:17:25

标签: mysql spring jpa entitymanager

我正在使用jpa和spring,并在下面的代码中出错;

@PersistenceContext protected EntityManager entityManager;

     entityManager.createQuery("select c from Theatre c");

并接受此错误。

java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: Theatre is
not mapped [select c from Theatre c]

为了解决我在下面使用的问题,但我需要任何其他解决方案,因为项目不应该知道类,我想进行动态编程

<class>Theatre </class> in "PersistenceUnit"

我很欣赏任何想法

最好的问候

1 个答案:

答案 0 :(得分:1)

您可以在 LocalContainerEntityManagerFactoryBean 定义(在Spring 3.1中提供)中使用 packagesToScan 属性。如果使用此方法,则无需再定义 persistence.xml 。配置应该是这样的:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
      <property name="dataSource" ref="dataSource" />
      <property name="packagesToScan" value="com.sergialmar.domain" />
      <property name="jpaVendorAdapter">
         <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
      </property>
      <property name="jpaProperties">
         <props>
            <prop key="hibernate.hbm2ddl.auto">create-drop</prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
         </props>
      </property>
   </bean>
相关问题