我已经以两种方式看到(并完成了)数据源配置(下面的代码仅用于演示):
1)配置内部持久性单元,如:
<persistence-unit name="LocalDB" transaction-type="RESOURCE_LOCAL">
<class>domain.User</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
<property name="hibernate.connection.url" value="jdbc:hsqldb:hsql://localhost"/>
<property name="hibernate.hbm2ddl.auto" value="create"/>
<property name="hibernate.c3p0.min_size" value="5"/>
....
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
</properties>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)
2)配置spring配置文件(如applicationContext.xml):
<bean id="domainEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="JiraManager"/>
<property name="dataSource" ref="domainDataSource"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="false"/>
<property name="showSql" value="false"/>
<property name="databasePlatform" value="${hibernate.dialect}"/>
</bean>
</property>
</bean>
<bean id="domainDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${db.driver}" />
<property name="jdbcUrl" value="${datasource.url}" />
<property name="user" value="${datasource.username}" />
<property name="password" value="${datasource.password}" />
<property name="initialPoolSize" value="5"/>
<property name="minPoolSize" value="5"/>
.....
</bean> …
Run Code Online (Sandbox Code Playgroud) 我试图在OSGi(Equinox)环境中使用Hibernate/Spring.如果我明确地将它指向Persistence.xml中的Entity类,它的效果很好:
<class>com.es.t.eee.domain.StuffSource</class>
<class>com.es.t.eee.domain.PostalAddress</class>
Run Code Online (Sandbox Code Playgroud)
我想要的是让Hibernate"找到"所有的Entity类,就像在OSGi环境之外一样.
Hibernate正在寻找@Entities的正确包:
Searching mapped entities in jar/par: bundleresource://34/
WARN 27-07 15:30:24,235 (InputStreamZippedJarVisitor.java:doProcessElements:41):
Unable to find file (ignored): bundleresource://34/
Run Code Online (Sandbox Code Playgroud)
它看起来应该可以正常工作,但是当它在Bundle Jar中查找@Entities时会发生异常,我不知道为什么.我已经包含了Hibernate正在吐出的日志的重要部分.
有没有人有任何想法我做错了什么或这里的问题是什么?
我在用:
这是Hibernate解析Persistence.xml的地方
INFO 27-07 15:30:24,110 (Version.java:<clinit>:15):
Hibernate Annotations 3.4.0.GA
INFO 27-07 15:30:24,110 (Environment.java:<clinit>:543):
Hibernate 3.3.0.SP1
INFO 27-07 15:30:24,110 (Environment.java:<clinit>:576):
hibernate.properties not found
INFO 27-07 15:30:24,126 (Environment.java:buildBytecodeProvider:709):
Bytecode provider name : javassist
INFO 27-07 15:30:24,126 (Environment.java:<clinit>:627):
using JDK …
Run Code Online (Sandbox Code Playgroud)