2013-09-05 1 views
0

Я использую jpa и spring и получил ошибку с кодом ниже;Нужно избегать использования «в PersistenceUnit» при запросе на entitymanager

@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" 

Я ценю любую идею

с наилучшими пожеланиями

+0

Я не уверен, что я понимаю вашу проблему, но у вас нет класса Theater в вашем проекте или вы не знаете этот класс, но у вас есть запрос " выберите c из Theater c "? – paulek

+0

Почему вам не нужен класс, знакомый с запросом? Чего вы пытаетесь достичь? Это мне непонятно. –

ответ

1

Вы можете использовать атрибут packagesToScan в вашем LocalContainerEntityManagerFactoryBean определение (доступно весной 3.1). Если вы используете этот подход, вам больше не нужно определять 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> 
Смежные вопросы