Аннотации 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.
