我想把一些hibernate配置放在一个属性文件中,使其无需构建和部署即可编辑。
我试图按照Create JPA EntityManager without persistence.xml configuration file的说明解决我的问题
网址:app.properties
hibernate.show_sql=true
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.hbm2ddl.auto=validate
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.default_schema=myschema
字符串
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Persistence deployment descriptor for dev profile -->
<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="pu">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/appDatasource</jta-data-source>
<properties>
<property name="jboss.entity.manager.factory.jndi.name" value="java:/appEntityManagerFactory"/>
</properties>
</persistence-unit>
</persistence>
型
在初始化代码中,应用程序执行以下序列,(查找属性),
Properties props = new Properties();
InputStream is = ClassLoader.getSystemResourceAsStream( "app.properties" );
props.load( is );
Persistence.createEntityManagerFactory( "pu", props );
型
但失败并显示错误消息:
INFO [SessionFactoryImpl] building session factory
INFO [SessionFactoryObjectFactory] Not binding factory to JNDI, no JNDI name configured
ERROR [STDERR] javax.persistence.PersistenceException: [PersistenceUnit: pu] Unable to build EntityManagerFactory
型
有人知道我的配置可能有什么问题吗?
版本:JBoss 4.3 Seam:2.1.2
编辑:
JBoss JNDI将“pu”登记为持久性单元:
persistence.units:ear=app.ear,jar=app.jar,unitName=pu (class: org.hibernate.impl.SessionFactoryImpl)
型
5条答案
按热度按时间niwlg2el1#
作为当前方法的替代方案,由于您使用的是Hibernate,您可以使用Hibernate通过使用
hibernate.ejb.cfgfile
属性声明hibernate.cfg.xml
文件来配置JPA,如下所示:字符串
我的理解是
hibernate.cfg.xml
应该在类路径上(所以它可能在打包的归档文件之外)。参考资料
ubbxdtey2#
刚刚发现了一个所谓的方式为EclipseLink用户。有一个“eclipselink.persistencexml”,它的默认值是
字符串
但它不能被覆盖虽然文件上说可以...
型
e37o9pze3#
我使用了这种机制,似乎对大多数属性都有效,但对非jta数据源有问题。
http://www.eclipse.org/eclipselink/api/2.4/index.html?org/eclipse/persistence/config/PersistenceUnitProperties.html
w9apscun4#
如果您使用Spring来管理和注入实体管理器,那么可以实现org.springframework.orm.jpa.persistenceunit.PersistenceUnitPostProcessor并传递外部属性。我可以成功地使用这个方法将persistence.xml中的所有属性外部化。
watbbzwu5#
字符串
我用hibernate JPA创建JSF项目,这个解决方案对我很有效。