2011-12-01 3 views
2

저는 SpringRoo를 사용하여 내 엔티티 객체의 최대 절전 모드를 처리하고 있습니다. 여기RooEntity가 매핑되지 않았습니다.

오류된다 :

QuerySyntaxException : 쿠폰 [쿠폰 오 FROM O 선택] 매핑되지 에서 단위 테스트를 실행할 때 기업이 매핑되지 여서

, 그들은 실패

<persistence-unit name="persistenceUnitTest" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <properties> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/> 
     <property name="hibernate.hbm2ddl.auto" value="create-drop"/> 
     <property name="hibernate.archive.autodetection" value="class"/> 
     <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/> 
     <property name="hibernate.connection.charSet" value="UTF-8"/> 
    </properties> 
</persistence-unit> 
: org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister (SessionFactoryHelper.java:180는)

이 내 지속성 단위가 같이 구성되어 무엇인가

이 나의 실체가 정의하는 방법입니다

@RooJavaBean 
@RooToString 
@RooEntity(identifierColumn = "COUPONID", identifierType = Integer.class, table = "COUPON") 
public class Coupon { 

응용 프로그램 컨텍스트가 설정됩니다

<context:component-scan base-package="com.tamiflu.entities"> 
    <context:exclude-filter expression=".*_Roo_.*" type="regex"/> 
</context:component-scan> 

<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory"/> 
</bean> 
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager"/> 
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory"> 
    <property name="persistenceUnitName" value="persistenceUnitTest"/> 
    <property name="dataSource" ref="dataSource"/> 
</bean> 

<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource"> 
    <property name="driverClassName" value="org.hsqldb.jdbcDriver"/> 
    <property name="url" value="jdbc:hsqldb:mem:tamiflu"/> 
    <property name="username" value="sa"/> 
    <property name="password" value=""/> 
    <property name="testOnBorrow" value="true"/> 
    <property name="testOnReturn" value="true"/> 
    <property name="testWhileIdle" value="true"/> 
    <property name="timeBetweenEvictionRunsMillis" value="1800000"/> 
    <property name="numTestsPerEvictionRun" value="3"/> 
    <property name="minEvictableIdleTimeMillis" value="1800000"/> 
</bean> 

내가 장소에서 모든 것을 가지고 같은 느낌. @RooEntity가 매핑되는 것으로 선택되지 않은 이유를 알 수 없습니다.

답변

0

Mikko Maunu가 맞습니다. SELECT가 JPA에 적합하지 않습니다. 올바른 것은 쿠폰 o입니다.

@RooJpaActiveRecord는 Roo : 1.2 (현재 RC1)의 수신 릴리스에 대한 새로운 주석이며 @Entity는 Roo의 현재 1.1.5 및 이전 버전에 대한 것입니다.

문제가 지속되면 :

  1. 을 검토 엔터티. Roo는 AspectJ 파일 (.aj 확장자, _Roo_Entity 또는 _Roo_Jpa_ActiveRecord와 같은)에서 메소드를 생성하지만 Java 파일로 이동 (또는 밀어 넣기) 할 수 있습니다. 의 메소드가 올바른 구문을 가지고 있는지 확인하십시오 (Mikko Maunu가 말한 것처럼 테이블 이름 대신 엔티티의 이름을 사용해야 함)
  2. 스캔 한 패키지를 검토하십시오. applicationContext에서 context : component-scan 요소를 찾고로드하려는 Entity가 기본 패키지의 하위 패키지 인 com.tamiflu.entities에 속하는지 확인하십시오.

두 번째 참고 사항 : Roo는 와일드 카드를 사용하여 응용 프로그램 컨텍스트 파일을로드하는 코드를 만듭니다.

주문이 보장되지 않기 때문에 두 개 이상일 경우주의하십시오. 스캔 할 패키지가 여러 개인 파일이 여러 개있는 경우 엔티티를로드하는 데 문제가 있습니다. 단, 와일드 카드를 제거하고 수동으로 applicationContext.xml 파일의 원하는 순서)

관련 문제