我有非常简单的persistance.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
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">
<persistence-unit name="eventractor" transaction-type="RESOURCE_LOCAL">
<class>pl.michalmech.eventractor.domain.User</class>
<class>pl.michalmech.eventractor.domain.Address</class>
<class>pl.michalmech.eventractor.domain.City</class>
<class>pl.michalmech.eventractor.domain.Country</class>
<properties>
<property name="hibernate.hbm2ddl.auto" value="validate" />
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)
它的工作原理.
但是当我删除<class>元素时,应用程序看不到实体(所有类都带有注释@Entity).
是否有任何自动机制来扫描@Entity类?
如果我将persistence.xml放在src/test/META-INF文件夹中,则自动检测实体不能与maven-verify一起使用.当persistence.xml位于src/main/META-INF文件夹中时,它可以正常工作.
在两种情况下都可以在eclipse中运行测试.
当persistence.xml位于src/test文件夹中时,有没有办法让autodetection用于maven-verify?
persistence.xml中:
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="Unit" transaction-type="RESOURCE_LOCAL">
<properties>
<!-- Scan for annotated classes and Hibernate mapping XML files -->
<property name="hibernate.archive.autodetection" value="class" />
</properties>
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud) 在我工作的项目中,我不使用Spring,我只使用Hibernate.我不想将hbm.xml文件用于实体映射/描述/等.我只想使用注释.
如何告诉Hibernate Entity/Table从某些软件包加载所有带注释的类?
我在网上搜索但我没有运气.另外,我找不到有关最新Hibernate版本的信息(主要是过时的文章/帖子等).
编辑1:
http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#mapping
hibernate doc页面说明了这一点:
对象/关系映射可以用三种方法定义:
1)使用Java 5注释(通过Java Persistence 2注释)
2)使用JPA 2 XML部署描述符(在第XXX章中描述)
3)使用Hibernate遗留XML文件方法的hbm.xml
就这样,我只想使用1)与SessionFactory/Session Hibernate API.
编辑2:
即使我的问题被标记为重复,但事实并非如此,因为我不想使用JPA(以及隐含的描述符),而只是使用上面列出的那些方法1).