Аннотации JPA в Android

У нас есть проект, который использует JPA/Hibernate на стороне сервера, сопоставленные классы сущностей находятся в своем собственном проекте библиотеки и используют аннотации для сопоставления с базой данных. Я хочу использовать эти классы в Android-проекте - есть ли способ игнорировать аннотации в Android, использовать эти классы в качестве стандартных POJOs?

4 ответов


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


фактические аннотации JPA являются частью Java SE 6, а не hibernate. Таким образом, вам не нужно иметь банку Hibernate, чтобы иметь возможность использовать аннотированные классы 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. Таким образом, все ваши аннотации JPA для java будут работать для 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.