2013-07-11 52 views
0

我有彈簧3.1.0一個應用程序,休眠4.0和JBoss 7.1.1彈簧特性膨脹產生QuerySyntaxException在實體

目標 - 性質的動態擴張加載持久性單元。

<bean id="propertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="searchSystemEnvironment" value="true" /> 
    <property name="locations"> 
     <list> 
       <value> file:/${PROPERTY_HOME}/jpa/kundera_jpa.properties</value> 
     </list> 
    </property> 
</bean> 

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" > 
    <property name="persistenceXmlLocation" value="classpath:./META-INF/persistence.xml"/> 
    <property name="persistenceUnitName" value="cassandra"/> 
    <property name="persistenceProvider" > 
     <bean class="com.impetus.kundera.KunderaPersistence" /> 
    </property> 
    <property name="jpaProperties"> 
     <props> 
     <prop key="kundera.nodes">${cassandra.kundera.nodes}</prop> 
     <prop key="kundera.port">${cassandra.kundera.port}</prop> 
     <prop key="kundera.keyspace">${cassandra.kundera.keyspace}</prop> 
     <prop key="kundera.dialect">${cassandra.kundera.dialect}</prop> 
     <prop key="kundera.client.lookup.class">${cassandra.kundera.client.lookup.class}</prop> 
     <prop key="jboss.as.jpa.providerModule">com.impetus.kundera</prop> 
     </props> 
    </property> 
</bean> 

的persistence.xml

<persistence-unit name="cassandra"> 
     <properties> 
      <property name="jboss.as.jpa.managed" value="false"/> 
     </properties> 
</persistence-unit> 
與 'jboss.as.jpa.managed',我停止的JBoss休眠自動加載卡桑德拉單元

查閱。 我能夠通過上面的我的bean的definaion成功加載屬性。但是,當運行時我的實體「UsageItem」正在生成以下異常

org.hibernate.hql.internal.ast.QuerySyntaxException:UsageItem沒有映射

但奇怪的是相同的代碼工作如果我手動硬編碼在persistence.xml中的屬性 - 當我硬編碼在上面的persistence.xml

<persistence-unit name="cassandra"> 
    <provider>com.impetus.kundera.KunderaPersistence</provider> 
    <properties> 
     <property name="kundera.nodes" value="172.16.9.70" /> 
     <property name="kundera.port" value="9160" /> 
     <property name="kundera.keyspace" value="iaas" /> 
     <property name="kundera.dialect" value="cassandra" /> 
     <property name="kundera.client.lookup.class" value="com.example.client.cassandra.pelops.JCPelopsClientFactory" /> 
     <property name="jboss.as.jpa.providerModule" value="com.impetus.kundera"/>   
    </properties> 
</persistence-unit> 

雖然,我說的休眠加載持久性單元,他是完美運行良好。 我覺得春天是無法加載我的實體「UsageItem」的。我不的元數據知道我在用彈簧沒有讓我前進失蹤。 現在一週,但仍然卡住。

回答

0

看起來你試圖使用Kundera作爲JBoss的持久化提供者?

我會建議嘗試最新2.6發佈與「jboss.as.jpa.managed」爲假。創建一個jboss模塊不會有太大的幫助,它需要打包一些庫並捆綁模塊。

而且,如果UsageItem所要求的昆德拉被正確地@Table註解,它應該工作。

-Vivek

+0

UsageItem與@Table註解正確的,因爲正如我前面提到的「相同的代碼工作,如果我手動硬編碼在persistence.xml中的屬性」。但我還沒有嘗試新的昆德拉2.6發佈 。 –