Question

Nous avons un projet qui utilise JPA / Hibernate côté serveur, les classes d'entités mappées sont dans leur propre bibliothèque-projet et utilisent des annotations pour être mappées à la base de données. Je souhaite utiliser ces classes dans un projet Android. Existe-t-il un moyen d'ignorer les annotations au sein d'Android, d'utiliser ces classes en tant que POJO standard?

Était-ce utile?

La solution

Le compilateur ne s’inquiètera pas tant que vous avez le jar avec les classes d’annotation JPA dans votre chemin de classe. Et si un système d'instrumentation d'exécution (tel que Hibernate) n'est pas présent, les annotations sont simplement des informations supplémentaires qui sont là mais qui ne sont pas utilisées. Le seul problème est d’assurer l’inclusion du fichier JPA dans votre distribution.

Autres conseils

Les annotations JPA réelles font partie de Java SE 6 et non d'hibernation. Vous n'avez donc pas besoin du JAR Hibernate pour pouvoir utiliser les classes annotées JPA. Tout ce dont vous avez besoin, c’est des classes / interfaces déclarant les annotations que vous référencez. Si vous pouvez vous le permettre, l’API JAR pleine est d’environ 50 000 $.

Je viens de rencontrer ce problème et depuis que j'utilise maven pour construire mon projet Android, j'ai ajouté cette dépendance

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

Vous pouvez utiliser Cmobilecom JPA pour Android et Java. Il implémente la spécification JPA 2.1. Ainsi, toutes vos annotations JPA pour Java fonctionneront pour Android sans aucune modification. Ajoutez simplement les dépendances suivantes dans vos projets.

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"
}

Clause de non-responsabilité: je suis un développeur de Cmobilecom JPA.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top