2013-12-12 21 views
1

我正在使用JPA和Hibernate構建Roo webapp。我有一個從webapp引用的庫項目。在Roo web應用程序具有以下實體:包含從外部jar的類的JPA實體

@RooJpaEntity 
@RooJavaBean 
public class UpdatePolicyHolder { 

    @ElementCollection(targetClass=Policy.class) 
    private List<Policy> policies; 
    private String deviceId; 
    private long timestamp; 

} 

Policy類在外部庫中定義,包括作爲jar文件。當啓動應用程序時,Hibernate抱怨說,它不能確定的Policy類型:

Could not determine type for: com.company.policy.Policy, at table:... 

我似乎無法在網上找到任何有關各地包括外部類的問題。我沒有對標準Roo生成的persistence.xml文件進行任何更改。我修改了applicationContext.xml文件,以確保實體和類的包都被組件掃描元素覆蓋。

webapp項目打包成一場戰爭,目前通過mvn jetty:run命令運行。包含Policy的jar包含在Maven依賴項中。

+0

描述您的包裝。你的應用是「耳朵」還是「戰爭」?哪裏有'Policy'的罐子,是'persistence.xml'的罐子? – rzymek

+0

@rzymek我上面的編輯應該解決您的問題 –

+0

請向我展示'Policy'類。 – rzymek

回答

0

包含策略的jar必須包含META-INF/persistence.xml以讓第三方應用掃描該jar內的實體。

然後設置彈簧EntityManagerFactory掃描持久實體:

<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
    id="entityManagerFactory"> 
    <property name="persistenceUnitName" 
     value="UNIT_NAME_OF_POLICY_PERSISTENCE_XML"/> 
    <property name="dataSource" ref="..."/> 
    <property name="packagesToScan" value="com.company.policy" /> 
... 
</bean> 

問候

+0

那麼爲什麼這不適用於XML映射實體? – kboom

+0

此問題不應影響xml映射的實體 – eruiz