Pergunta

Nós temos um projeto que usa JPA / Hibernate no lado do servidor, as classes de entidade mapeadas estão em sua própria Biblioteca-Project e usar anotações para ser mapeado para o banco de dados. Eu quero usar essas classes em um Android-Project -? Existe alguma maneira de ignorar as anotações dentro de Android, para usar essas classes como POJOs padrão

Foi útil?

Solução

O compilador não vai se importar, desde que você tem o frasco com as classes de anotações JPA em seu classpath. E se um sistema de execução de instrumentação (como Hibernate) não estiver presente, as anotações são apenas informações extra que estão lá, mas não utilizados. O único problema é assegurar a inclusão do frasco JPA em sua distribuição.

Outras dicas

As anotações JPA reais são parte do Java SE 6, não hibernam. Assim você não precisa ter a JAR Hibernate para ser capaz de usar JPA classes anotadas. Tudo que você precisa é as classes / interfaces declarando as anotações você está fazendo referência, se você pode pagar o frasco JPA API completa é de cerca de 50k.

Eu apenas corri para este problema e desde que eu utilizar o Maven para construir meu projeto android eu adicionei essa dependência

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

Você pode usar Cmobilecom JPA para Android e Java. Ele implementa JPA especificação 2.1. Assim, todas as suas anotações JPA para java irá trabalhar para android sem quaisquer alterações. Basta adicionar as seguintes dependências em seus projetos.

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

Disclaimer: Eu sou um desenvolvedor de Cmobilecom JPA

.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top