2009-10-27 4 views
8

У нас есть проект, который использует серверу JPA/Hibernate, сопоставленные классы объектов находятся в их собственном проекте библиотеки и используют Аннотации для сопоставления с базой данных.JPA Аннотации в Android

Я хочу использовать эти классы в Android-Project -

Есть ли способ игнорировать аннотации внутри Android, чтобы использовать эти классы в качестве стандартного POJOs?

ответ

6

Компилятору все равно, если у вас есть банка с классами аннотации JPA в вашем пути к классам. И если нет системы контроля времени выполнения (например, Hibernate), аннотации - это дополнительная информация, которая там, но не используется. Единственная проблема заключается в том, чтобы включить банку JPA в ваш дистрибутив.

+3

И это может быть проблемой. Я действительно не хочу связывать все hibernate-JAR в Android-проекте. – dasmaze

+0

Если вы не можете связать необходимые классы, то единственным решением, которое я могу придумать, является использование пользовательского загрузчика классов, который удаляет аннотации из байт-кода. Его нетривиальная задача, но выполнимая. – alphazero

+0

p.s. Преобразование байт-кода не обязательно должно происходить при загрузке. Другой вариант - запустить процесс над серверами libs и дезинформировать их для android, создав новый набор файлов классов. – alphazero

5

Фактические аннотации JPA являются частью Java SE 6, а не спящего режима. Таким образом, вам не нужно, чтобы JAR Hibernate мог использовать аннотированные классы JPA. Все, что вам нужно, это классы/интерфейсы, объявляющие аннотации, на которые ссылаются, если вы можете себе это позволить, полная JPA api jar составляет около 50 тыс.

+0

Разве это не 'Java EE 6'? –

0

Я просто столкнулся с этой проблемой, и поскольку я использую Maven для создания моего андроида проекта я добавил эту зависимость

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