java – 带有Hibernate映射文件的Spring Data JPA
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 带有Hibernate映射文件的Spring Data JPA,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3762字,纯文字阅读大概需要6分钟。
内容图文
![java – 带有Hibernate映射文件的Spring Data JPA](/upload/InfoBanner/zyjiaocheng/800/8e0df65a15c345e19f69cb59476bfaf7.jpg)
我想将Spring Data JPA与Hibernate映射文件一起使用,而不使用JPA-Annotations.
但是我在服务器启动时面临这个异常(tomcat):
java.lang.IllegalStateException: No persistence units parsed from {classpath*:META-INF/persistence.xml}
at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.obtainDefaultPersistenceUnitInfo(DefaultPersistenceUnitManager.java:547)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.determinePersistenceUnitInfo(LocalContainerEntityManagerFactoryBean.java:311)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:260)
My dispatch-servlet.xml looks like the following:
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<!--<property name="persistenceUnitName" value="BLUPP" />-->
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter" />
<!-- <property name="packagesToScan" value="org.cleanyourway.server.beans" />-->
<property name="persistenceUnitPostProcessors">
<list>
<bean
class="org.springframework.data.jpa.support.ClasspathScanningPersistenceUnitPostProcessor">
<constructor-arg value="org.xxxxxx.server.beans" />
<property name="mappingFileNamePattern" value="**hbm.xml" />
</bean>
</list>
</property>
</bean>
是否可以将Hibernate映射文件与ClasspathScanningPersistenceUnitPostProcessor一起使用?
我让它运行
<property name="packagesToScan" value="org.xxxxxxx.server.beans" />
和JPA注释.
谢谢你的帮助!
解决方法:
简要地
您的问题可能来自您提供的mappingFileNamePattern.尝试** / * .hbm.xml而不是** hbm.xml.
完整代码段:
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<!--<property name="persistenceUnitName" value="BLUPP" />-->
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter" />
<!-- <property name="packagesToScan" value="org.cleanyourway.server.beans" />-->
<property name="persistenceUnitPostProcessors">
<list>
<bean
class="org.springframework.data.jpa.support.ClasspathScanningPersistenceUnitPostProcessor">
<constructor-arg name="basePackage" value="org.xxxxxx.server.beans" />
<property name="mappingFileNamePattern" value="**/*hbm.xml" />
</bean>
</list>
</property>
</bean>
详情
蚂蚁路径模式
Spring使用Ant路径样式模式.您可以在Ant Website上找到有关这些模式的详细文档.双星号通配符表示:递归子目录.它后面应该是一个斜杠,因为它代表一个目录.
ClasspathScanningPersistenceUnitPostProcessor
ClasspathScanningPersistenceUnitPostProcessor的映射文件检测部分将两个参数(basePackage(您的构造函数args)和mappingFileNamePattern)考虑在内.通过建议的更正,Spring将在类路径的子文件夹org / xxxxxx / server / beans /中搜索所有** .hbm.xml *.
换句话说,您不能指望您的mappingFileNamePattern将被单独解释为搜索.
下面是制作作业的ClasspathScanningPersistenceUnitPostProcessor的代码片段:
String path = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
+ basePackage.replace('.', File.separatorChar)
+ File.separator + mappingFileNamePattern;
ClasspathScanningPersistenceUnitPostProcessor的小限制
您无法扫描位于类路径中JAR文件根目录的HBM文件. basePackage不支持为空,只能使用“.”.值.
此外,底层的PathMatchingResourcePatternResolver不能使用带有wilcard(在大多数情况下为*)的Ant样式路径模式而没有根目录(here和here(其他注释中的第一个警告)).
ClasspathScanningPersistenceUnitPostProcessor的错误
这个类从未使用过Hibernate.
在1.4.x之前的版本中,有this bug.
在this pull request中,似乎有一个新的错误阻止我在JAR中使用HBM.我在第146行得到了一个N??ullPointerException,因为resource.getURI().getPath();似乎没有使用带有两个的URI:在协议(jar:file:/在这种情况下)并返回一个空路径.
(当我找到一个或发布一个错误报告时,我会用错误报告的链接更新我的回答.)
内容总结
以上是互联网集市为您收集整理的java – 带有Hibernate映射文件的Spring Data JPA全部内容,希望文章能够帮你解决java – 带有Hibernate映射文件的Spring Data JPA所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。