2009-10-27 72 views
8

我们有一个在服务器端使用JPA/Hibernate的项目,映射的实体类位于其自己的Library-Project中,并使用Annotations映射到数据库。Android中的JPA注释

我想在Android项目中使用这些类 -

有没有办法忽略内Android的注释,使用这些类作为标准的POJO

回答

6

只要您在类路径中有JPA注释类的jar,编译器就不会在意。如果运行时检测系统(如Hibernate)不存在,注释只是额外的信息,但没有被使用。唯一的问题是确保将JPA jar包含在您的发行版中。

+3

这可能是一个问题。我并不想将所有的hibernate-JAR捆绑到Android项目中。 – dasmaze 2009-10-27 14:36:14

+0

如果你不能绑定所需的类,那么我能想到的唯一解决方案是使用自定义类加载器从字节码中去掉注释。这是一个不平凡的任务,但可行。 – alphazero 2009-10-27 15:06:12

+0

p.s.字节码转换不一定在加载时发生。另一种选择是通过服务器库运行一个进程,并通过生成一组新的类文件来对它们进行消毒。 – alphazero 2009-10-27 15:07:51

5

实际的JPA批注是Java SE 6的一部分,而不是休眠。所以你不需要让Hibernate JAR能够使用JPA注释类。 所有你需要的是声明你引用的注解的类/接口,如果你能负担得起它的完整JPA api jar约为50k。

+0

是不是Java EE 6? – 2012-12-21 17:23:44

0

我只是碰到了这个问题,因为我用maven构建我的Android项目我加入这个依赖

<dependency> 
    <groupId>org.hibernate.javax.persistence</groupId> 
    <artifactId>hibernate-jpa-2.0-api</artifactId> 
    <version>1.0.1.Final</version> 
    </dependency>