Domanda

Abbiamo un progetto che utilizza JPA / Hibernate sul lato server, le classi di entità mappate sono nel loro progetto-libreria e usano le annotazioni per essere mappate sul database. Voglio usare queste classi in un progetto Android - c'è un modo per ignorare le annotazioni all'interno di Android, per usare queste classi come POJO standard?

È stato utile?

Soluzione

Al compilatore non importa se hai il jar con le classi di annotazione JPA nel tuo percorso di classe. E se non è presente un sistema di strumentazione di runtime (come Hibernate), le annotazioni sono solo informazioni extra che sono lì ma non utilizzate. L'unico problema è assicurare l'inclusione del vaso JPA nella tua distribuzione.

Altri suggerimenti

Le effettive annotazioni JPA fanno parte di Java SE 6, non vanno in letargo. Quindi non è necessario disporre del JAR Hibernate per poter utilizzare le classi annotate JPA. Tutto ciò di cui hai bisogno sono le classi / interfacce che dichiarano le annotazioni a cui fai riferimento, se te lo puoi permettere, il vaso API completo JPA è di circa 50k.

Mi sono appena imbattuto in questo problema e dal momento che uso Maven per costruire il mio progetto Android ho aggiunto questa dipendenza

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

Puoi utilizzare Cmobilecom JPA per Android e Java. Implementa le specifiche JPA 2.1. Quindi tutte le tue annotazioni JPA per Java funzioneranno per Android senza alcuna modifica. Aggiungi semplicemente le seguenti dipendenze nei tuoi progetti.

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

Dichiarazione di non responsabilità: sono uno sviluppatore dell'APP Cmobilecom.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top