今天做了一个实验发现一个问题:
使用tomcat启动, 一切OK.
如果使用java application跑, 则会出现 unknown entity 异常.
相当郁闷. 代码一样的, 只是启动方式不同.
既然是 unknown entity, 问题肯定是在 hibernate扫不到entity类了.
后来想了下, 我配置和其它人的配置最大的区别是 persistence.xml文件的位置.
(
我为了方便,放在classpath根目录了.并且在applicationContext.xml 中使用
<property name="persistenceXmlLocation" value="value="classpath:persistence.xml" /" />
在tomcat上运行正常的.
)
后来在classpath上建了一个META-INF文件夹,把persistence.xml放在文件夹里,
spring的配置文件改为:
<property name="persistenceXmlLocation" value="classpath*:/META-INF/persistence.xml" />
一切OK了. 不管是tomcat环境,还是junit环境,还是java application都可以了.
结论:
persistence.xml文件的位置,可以影响到hibernate扫描 annotation标记过的实体类的包范围.
分享到:
相关推荐
在Java EE中,META-INF文件夹可能包含`MANIFEST.MF`文件,它记录了JAR文件的基本信息,如版本、依赖关系等。此外,它还可能包含`persistence.xml`文件,这是Java Persistence API (JPA)配置文件,用于定义数据持久化...
SPI(Service Provider Interface)是Java提供的一种服务发现机制,它允许开发者通过定义接口并在运行时动态加载实现类来扩展应用程序的功能。...理解并掌握SPI机制对于提升Java应用的可扩展性和灵活性至关重要。
`.classpath`文件定义了项目的类路径,包括库(JARs)、源文件夹等,这对于确保Eclipse知道如何构建和运行项目至关重要。`.project`文件则包含了项目的元数据,如构建配置、nature(项目特性)和构建指令。在非容器...
- **META-INF 文件夹**:包含了MANIFEST.MF文件和persistence.xml文件。MANIFEST.MF文件用于描述项目的元数据,而persistence.xml文件则定义了JPA的数据源和配置。 2. **Entity 类开发**: - 实现Serializable...
3. **src/main/resources**:资源文件夹,可能包含配置文件(如application.properties或yaml文件)和SpringBoot的自动配置元数据(META-INF/spring.factories)。这个元数据文件用于告诉SpringBoot在哪里找到自动...