Hibernate WebSphere6.1中的OpenJPA错误

Hibernate WebSphere6.1中的OpenJPA错误,hibernate,jpa,websphere,openjpa,Hibernate,Jpa,Websphere,Openjpa,My persistence.xml看起来像: <persistence-unit name="fruitManager" transaction-type="RESOURCE_LOCAL"> <!-- Hibernate as provider --> <provider>org.hibernate.ejb.HibernatePersistence</provider> <!-- list your persi

My persistence.xml看起来像:

 <persistence-unit name="fruitManager" transaction-type="RESOURCE_LOCAL">

    <!-- Hibernate as provider -->
    <provider>org.hibernate.ejb.HibernatePersistence</provider>

    <!-- list your persistent classes here -->
    <class>com.mypackage.Fruit</class>

    <!-- any more classes if there-->

    <properties>

         <!-- DB2 UDB -->           
 <property name="hibernate.dialect" value="org.hibernate.dialect.DB2Dialect" />
 <property name="hibernate.default_schema" value="MYSCHEMA" />

         <!-- provide datasource properties -->
         <property name="hibernate.connection.driver_class" value="com.ibm.db2.jcc.DB2Driver"></property>   
         <property name="hibernate.connection.username" value="abc"></property>   
         <property name="hibernate.connection.password" value="xyz"></property>   
         <property name="hibernate.connection.url" value="jdbc:db2://abc.xyz:50001/TESTDB"></property> 


        <property name="hibernate.connection.provider_class" value="org.hibernate.connection.C3P0ConnectionProvider" />
        <property name="c3p0.acquire_increment" value="1"></property> 
        <property name="c3p0.idle_test_period" value="100"></property> <!-- seconds --> 
        <property name="c3p0.max_size" value="100"></property> 
        <property name="c3p0.max_statements" value="0"></property> 
        <property name="c3p0.min_size" value="10"></property> 
        <property name="c3p0.timeout" value="100"></property> <!-- seconds --> 

        <!-- For Debug mode, enable it until development  -->
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.format_sql" value="true" /> 
        <property name="hibernate.use_sql_comments" value="false" />

    </properties>

 </persistence-unit>
在我的DAO中,代码是:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("fruitManager");
EntityManager em = emf.createEntityManager();

//get the criteria builder
CriteriaBuilder cb = em.getCriteriaBuilder();

CriteriaQuery<Fruit> c = cb.createQuery(Fruit.class);
为了测试安装是否正常工作,我运行以下简单查询:

    // get the count of the results first
    CriteriaQuery<Long> cq = cb.createQuery(Long.class);
    cq.select(cb.count(cq.from(Fruit.class)));
    Long count = em.createQuery(cq).getSingleResult();

    System.out.println("Number of fruits are: " + count);
但是,我得到以下错误:

[10/17/11 14:02:40:069 IST] 00000076 SystemErr     R <openjpa-1.0.3-SNAPSHOT-r420667:649224 fatal user error> org.apache.openjpa.persistence.ArgumentException: A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName property.
我正在WAS6.1上运行这个示例


有什么提示和想法吗?

我认为这是因为您正在使用hibernate属性设置驱动程序信息

<property name="hibernate.connection.driver_class" value="com.ibm.db2.jcc.DB2Driver"></property>   
<property name="hibernate.connection.username" value="abc"></property>   
<property name="hibernate.connection.password" value="xyz"></property>   
<property name="hibernate.connection.url" value="jdbc:db2://abc.xyz:50001/TESTDB"></property> 

您需要找到OpenJPA等价物。

我在您的Hibernate配置中看不到任何明显的错误,但是:

CriteriaBuilder cb = em.getCriteriaBuilder();

这说明您正在尝试使用Hibernate3.6或3.5,对吗?它是JPA2.0兼容的,这意味着:WebSphere6.1不兼容。有关更多详细信息,请参阅我的一篇文章。您可能希望在应用程序启动时检查SystemOut.log和SystemErr.log,您可能会在那里发现一些错误。

如果我想使用非jta事务怎么办???本文仅解释了JTA事务。您将持久性提供程序设置为Hibernate,但要使用OpenJPA吗?您没有为连接驱动程序/URL/user/password设置JPA标准属性。@DataNucleus他说要在哪里使用OpenJPA?-1。这家伙试图使用Hibernate,这是一个完全正确的意图。他为什么要切换到OpenJPA属性?他得到的错误是因为Websphere的内置OpenJPA提供程序被初始化。@MaDa后来编辑的原始帖子提到他想使用OpenJPA。谢谢你,伙计!注意上面帖子上的评论@JamesDW请编辑您的答案,除非答案已编辑,否则无法恢复投票。是否可以使用Hibernate 3.6或3.5,但仅使用JPA 1.0组件?比如,我不会使用criteriabuilder,而只使用命名查询。这会有帮助吗???另外,对于刚接触hibernate、spring、websphere等的人来说,一个与堆栈溢出相关的问题,我得到的错误是一个有效的错误。此外,我在提问时已清楚地提供了所有细节。我的问题还是被否决了??为什么?这对像我们这样的新手没有帮助,因为如果我们的问题被否决,StackOverflow会阻止我们发布愚蠢但有效的问题@尼金乔汉1。不,您需要降级您的Hibernate版本,即使您不打算使用JPA2增强功能。2.我真的不知道。你的问题很成熟,而且切中要害。我给它+1。不要放弃,所以同时对白痴和天才开放。就像生活中的任何地方。
CriteriaBuilder cb = em.getCriteriaBuilder();