我们有一个在服务器端使用JPA / Hibernate的项目,映射的实体类在他们自己的Library-Project中,并使用Annotations映射到数据库。我想在Android项目中使用这些类 - 有没有办法忽略Android中的注释,将这些类用作标准POJO?

有帮助吗?

解决方案

只要您的类路径中包含带有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。只需在项目中添加以下依赖项即可。

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的开发人员。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top