我们有一个在服务器端使用JPA / Hibernate的项目,映射的实体类在它们自己的Library-Project中,并使用Annotations映射到数据库。我想在Android项目中使用这些类 - 有没有办法忽略Android中的注释,将这些类用作标准POJO?
我们有一个在服务器端使用JPA / Hibernate的项目,映射的实体类在它们自己的Library-Project中,并使用Annotations映射到数据库。我想在Android项目中使用这些类 - 有没有办法忽略Android中的注释,将这些类用作标准POJO?
只要您的类路径中包含带有JPA注释类的jar,编译器就不会在意。如果不存在运行时检测系统(例如Hibernate),则注释只是那些但不使用的额外信息。唯一的问题是确保在您的发行版中包含JPA jar。
只要您的类路径中包含带有JPA注释类的jar,编译器就不会在意。如果不存在运行时检测系统(例如Hibernate),则注释只是那些但不使用的额外信息。唯一的问题是确保在您的发行版中包含JPA jar。
实际的JPA注释是Java SE 6的一部分,而不是hibernate。因此,您不需要让Hibernate JAR能够使用JPA带注释的类。 所有你需要的是声明你引用的注释的类/接口,如果你能负担得起,完整的JPA api jar大约是50k。
我刚遇到这个问题,因为我使用maven来构建我的android项目,所以我添加了这个依赖项
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
您可以使用 Cmobilecom JPA 对于android和java。它实现了JPA 2.1规范。所以你所有的java JPA注释都适用于android而不做任何改动。只需在项目中添加以下依赖项即可。
安卓:
dependencies {
implementation("com.cmobilecom:cmobilecom-jpa-android:${version}@aar") {
transitive = true
}
annotationProcessor "com.cmobilecom:cmobilecom-jpa-processor:$version"
}
JDBC:
dependencies {
implementation "com.cmobilecom:cmobilecom-jpa-jdbc:$version"
// annotation processor: generate static metamodel
compileOnly "com.cmobilecom:cmobilecom-jpa-processor:$version"
}
免责声明:我是Cmobilecom JPA的开发人员。