Java OpenJPA:必须在ConnectionDriverName属性中指定JDBC驱动程序或数据源类名

Java OpenJPA:必须在ConnectionDriverName属性中指定JDBC驱动程序或数据源类名,java,hibernate,jpa,openjpa,Java,Hibernate,Jpa,Openjpa,在尝试使用openjpa做一个简单的示例时,我遇到了上述异常。这里我使用的是一个自定义持久性提供程序类。下面是我的persistence.xml文件。我浏览了以前类似的线程,但在配置中找不到合适的解决方案 persistence.xml <?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi=

在尝试使用openjpa做一个简单的示例时,我遇到了上述异常。这里我使用的是一个自定义持久性提供程序类。下面是我的persistence.xml文件。我浏览了以前类似的线程,但在配置中找不到合适的解决方案

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
             version="1.0">
    <persistence-unit name="juddiDatabase" transaction-type="RESOURCE_LOCAL">
        <provider>org.juddi.test.persistance.JUDDIPersistenceProviderImpl</provider>
        <mapping-file>META-INF/orm.xml</mapping-file>
        <!-- entity classes -->
        <class>org.apache.juddi.model.Address</class>
        <class>org.apache.juddi.model.AddressLine</class>
        <class>org.apache.juddi.model.AuthToken</class>
        <class>org.apache.juddi.model.BindingCategoryBag</class>
        <class>org.apache.juddi.model.BindingDescr</class>
        <class>org.apache.juddi.model.BindingTemplate</class>
        <class>org.apache.juddi.model.BusinessCategoryBag</class>
        <class>org.apache.juddi.model.BusinessDescr</class>
        <class>org.apache.juddi.model.BusinessEntity</class>
        <class>org.apache.juddi.model.BusinessIdentifier</class>
        <class>org.apache.juddi.model.BusinessName</class>
        <class>org.apache.juddi.model.BusinessService</class>
        <class>org.apache.juddi.model.CategoryBag</class>
        <class>org.apache.juddi.model.Clerk</class>
        <class>org.apache.juddi.model.ClientSubscriptionInfo</class>
        <class>org.apache.juddi.model.Contact</class>
        <class>org.apache.juddi.model.ContactDescr</class>
        <class>org.apache.juddi.model.DiscoveryUrl</class>
        <class>org.apache.juddi.model.Email</class>
        <class>org.apache.juddi.model.InstanceDetailsDescr</class>
        <class>org.apache.juddi.model.InstanceDetailsDocDescr</class>
        <class>org.apache.juddi.model.KeyedReference</class>
        <class>org.apache.juddi.model.KeyedReferenceGroup</class>
        <class>org.apache.juddi.model.Node</class>
        <class>org.apache.juddi.model.OverviewDoc</class>
        <class>org.apache.juddi.model.OverviewDocDescr</class>
        <class>org.apache.juddi.model.PersonName</class>
        <class>org.apache.juddi.model.Phone</class>
        <class>org.apache.juddi.model.Publisher</class>
        <class>org.apache.juddi.model.PublisherAssertion</class>
        <class>org.apache.juddi.model.PublisherAssertionId</class>
        <class>org.apache.juddi.model.ServiceCategoryBag</class>
        <class>org.apache.juddi.model.ServiceDescr</class>
        <class>org.apache.juddi.model.ServiceName</class>
        <class>org.apache.juddi.model.ServiceProjection</class>
        <class>org.apache.juddi.model.ServiceProjectionId</class>
        <class>org.apache.juddi.model.Subscription</class>
        <class>org.apache.juddi.model.SubscriptionChunkToken</class>
        <class>org.apache.juddi.model.SubscriptionMatch</class>
        <class>org.apache.juddi.model.Tmodel</class>
        <class>org.apache.juddi.model.TmodelCategoryBag</class>
        <class>org.apache.juddi.model.TmodelDescr</class>
        <class>org.apache.juddi.model.TmodelIdentifier</class>
        <class>org.apache.juddi.model.TmodelInstanceInfo</class>
        <class>org.apache.juddi.model.TmodelInstanceInfoDescr</class>
        <class>org.apache.juddi.model.TransferToken</class>
        <class>org.apache.juddi.model.TransferTokenKey</class>
        <class>org.apache.juddi.model.UddiEntity</class>
        <class>org.apache.juddi.model.UddiEntityPublisher</class>

        <properties>
            <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
            <property name="openjpa.Log" value="DefaultLevel=ERROR, Tool=ERROR"/>
            <property name="openjpa.jdbc.UpdateManager" value="operation-order"/>
            <property name="openjpa.RuntimeUnenhancedClasses" value="warn"/>

            <!-- h2 connection properties -->
            <property name="openjpa.ConnectionDriverName" value="org.h2.Driver"/>
            <property name="openjpa.ConnectionURL" value="jdbc:h2:repository/database/juddiv3"/>
            <property name="openjpa.ConnectionUserName" value="test"/>
            <property name="openjpa.ConnectionPassword" value="test"/>

            <!--  mysql connection properties
            <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/juddi"/>
            <property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/>
            <property name="openjpa.ConnectionUserName" value="juddiv3"/>
            <property name="openjpa.ConnectionPassword" value=""/>
            -->
            <property name="openjpa.Compatibility" value="CheckDatabaseForCascadePersistToDetachedEntity=true"/>
        </properties>
    </persistence-unit>
</persistence>

org.juddi.test.persistence.juddippersistenceProviderImpl
META-INF/orm.xml
org.apache.juddi.model.Address
org.apache.juddi.model.AddressLine
org.apache.juddi.model.AuthToken
org.apache.juddi.model.BindingCategoryBag
org.apache.juddi.model.BindingDescr
org.apache.juddi.model.BindingTemplate
org.apache.juddi.model.BusinessCategoryBag
org.apache.juddi.model.BusinessDescr
org.apache.juddi.model.BusinessEntity
org.apache.juddi.model.BusinessIdentifier
org.apache.juddi.model.BusinessName
org.apache.juddi.model.BusinessService
org.apache.juddi.model.CategoryBag
org.apache.juddi.model.Clerk
org.apache.juddi.model.ClientSubscriptionInfo
org.apache.juddi.model.Contact
org.apache.juddi.model.ContactDescr
org.apache.juddi.model.DiscoveryUrl
org.apache.juddi.model.Email
org.apache.juddi.model.InstanceDetailsDescr
org.apache.juddi.model.InstanceDetailsDocDescr
org.apache.juddi.model.KeyedReference
org.apache.juddi.model.KeyedReferenceGroup
org.apache.juddi.model.Node
org.apache.juddi.model.OverviewDoc
org.apache.juddi.model.overview docdescr
org.apache.juddi.model.PersonName
org.apache.juddi.model.Phone
org.apache.juddi.model.Publisher
org.apache.juddi.model.PublisherAssertion
org.apache.juddi.model.PublisherAssertionId
org.apache.juddi.model.ServiceCategoryBag
org.apache.juddi.model.ServiceDescr
org.apache.juddi.model.ServiceName
org.apache.juddi.model.ServiceProjection
org.apache.juddi.model.ServiceProjectionId
org.apache.juddi.model.Subscription
org.apache.juddi.model.SubscriptionChunkToken
org.apache.juddi.model.SubscriptionMatch
org.apache.juddi.model.Tmodel
org.apache.juddi.model.TmodelCategoryBag
org.apache.juddi.model.TmodelDescr
org.apache.juddi.model.TmodelIdentifier
org.apache.juddi.model.TmodelInstanceInfo
org.apache.juddi.model.TmodelInstanceInfoDescr
org.apache.juddi.model.TransferToken
org.apache.juddi.model.TransferTokenKey
org.apache.juddi.model.UddiEntity
org.apache.juddi.model.UddiEntityPublisher
我得到了以下错误

org.apache.openjpa.persistence.ArgumentException: A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName property. Available properties in configuration are "org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl@442ce698".
at org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:72)
at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:844)
at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:602)
at org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1510)
at org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:518)
at org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:443)
at org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:104)
at org.apache.openjpa.conf.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68)
at org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83)
at org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:968)
at org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:959)
at org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:638)
at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:203)
at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
at org.apache.juddi.config.PersistenceManager.getEntityManager(PersistenceManager.java:45)
at org.apache.juddi.config.AppConfig.getPersistentConfiguration(AppConfig.java:109)
at org.apache.juddi.config.AppConfig.loadConfiguration(AppConfig.java:95)
at org.apache.juddi.config.AppConfig.<init>(AppConfig.java:62)
at org.apache.juddi.config.AppConfig.getInstance(AppConfig.java:183)
at org.apache.juddi.config.AppConfig.getConfiguration(AppConfig.java:205)
at org.apache.juddi.Registry.start(Registry.java:55)
org.apache.openjpa.persistence.ArgumentException:必须在ConnectionDriverName属性中指定JDBC驱动程序或数据源类名。配置中的可用属性是“org.apache.openjpa.jdbc.conf”。JDBCConfigurationImpl@442ce698".
位于org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:72)
位于org.apache.openjpa.jdbc.conf.jdbcconfigurationmpl.createConnectionFactory(jdbcconfigurationmpl.java:844)
位于org.apache.openjpa.jdbc.conf.jdbconfigurationmpl.getDBDictionaryInstance(jdbconfigurationmpl.java:602)
位于org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1510)
位于org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:518)
位于org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:443)
位于org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:104)
位于org.apache.openjpa.conf.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68)
在org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83)上
位于org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:968)
位于org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:959)
位于org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:638)
位于org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:203)
位于org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
位于org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
位于org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
位于org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
位于org.apache.juddi.config.PersistenceManager.getEntityManager(PersistenceManager.java:45)
位于org.apache.juddi.config.AppConfig.getPersistentConfiguration(AppConfig.java:109)
位于org.apache.juddi.config.AppConfig.loadConfiguration(AppConfig.java:95)
位于org.apache.juddi.config.AppConfig.(AppConfig.java:62)
位于org.apache.juddi.config.AppConfig.getInstance(AppConfig.java:183)
位于org.apache.juddi.config.AppConfig.getConfiguration(AppConfig.java:205)
位于org.apache.juddi.Registry.start(Registry.java:55)

persistence.xml
配置文件中,您有几个数据源描述(MySQL和H2)。删除其中一个并重试。

请,请,请设置openjpa.RuntimeUnenhancedClasses=warn。该属性被禁用有很好的理由,您将遇到已知的bug。我建议设置-javaagent或buildtime增强器。另外,是否有其他链接原因没有显示?没有。所有内容都提到了。将openjpa.runtimeunhancedclasses=warn放在哪里?它有什么用。它能解决我的问题吗?A.