Pregunta

Tenemos un proyecto que usa JPA / Hibernate en el lado del servidor, las clases de entidad mapeadas están en su propio Proyecto Biblioteca y usan Anotaciones para mapear a la base de datos. Quiero usar estas clases en un proyecto de Android: ¿hay alguna forma de ignorar las anotaciones dentro de Android para usar estas clases como POJO estándar?

¿Fue útil?

Solución

Al compilador no le importará mientras tenga el jar con las clases de anotación JPA en su classpath. Y si un sistema de instrumentación de tiempo de ejecución (como Hibernate) no está presente, las anotaciones son solo información adicional que está allí pero no se usa. El único problema es asegurar la inclusión del jar JPA en su distribución.

Otros consejos

Las anotaciones JPA reales son parte de Java SE 6, no hibernan. Por lo tanto, no necesita tener el JAR de Hibernate para poder usar clases anotadas JPA. Todo lo que necesita es las clases / interfaces que declaran las anotaciones a las que hace referencia, si puede permitírselo, el JPA api jar completo es de aproximadamente 50k.

Acabo de encontrarme con este problema y desde que uso Maven para construir mi proyecto de Android agregué esta dependencia

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

Puede usar Cmobilecom JPA para Android y Java. Implementa la especificación JPA 2.1. Por lo tanto, todas sus anotaciones JPA para Java funcionarán para Android sin ningún cambio. Simplemente agregue las siguientes dependencias en sus proyectos.

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

Descargo de responsabilidad: soy desarrollador de Cmobilecom JPA.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top