Pergunta

Eu uso a persistência do JPA para meus modelos de dados com o Eclipselink como provedor de persistência. Eu tenho um aplicativo modular (OSGI) e um dos módulos contém o modelo de dados padrão e uma unidade de persistência que inclui automaticamente todas as entidades do pacote. O provedor de persistência está em outro módulo, que funciona bem.

Agora, quero um terceiro módulo para adicionar algumas entidades à unidade de persistência. Como faço isso? eu encontrei esta solução, que parece específico para a primavera que não estou usando. O resumo dessa abordagem é escrever um pós -processador que se conecta ao processamento da unidade de persistência e funda manualmente <class> entradas do persistence.xml arquivos.

É possível mesclar unidades de persistência? Alguém pode sugerir uma solução alternativa?

Foi útil?

Solução

Primeiro, aqui está um link sobre Dinâmico-jpa Eles oferecem uma maneira de atualizar entidades dinamicamente. Eu exploraria esta opção primeiro.


Aqui está outro link (Pdf) do OSGI, existem alguns diagramas de nível superior que lidam com a persistência e o entityManagerFactory que podem ser úteis.


uma abordagem interessante mas pode não estar relacionado

Aqui está um link sobre criando unidades de persistência programaticamente sem usar um arquivo persistence.xml (o que você realmente não pode fazer, mas as respostas oferecem algumas dicas sobre o problema). Philk oferece uma sugestão sobre como remover o provedor do arquivo persistence.xml. Se você seguir esse método, poderá combinar suas entidades em uma unidade de persistência específica.

"Bem, nos bons velhos tempos do hibernado, eu poderia simplesmente criar uma sessão e adicionar minhas aulas em tempo real. Parece que nunca chegou às especificações do JPA do Suns. No entanto, removi completamente o provedor da persistência.xml e entregue Para usar as propriedades do EMF. Isso parece funcionar bem. A única coisa que resta na persistência.xml é a especificação das classes. Acho que não seria muito difícil expor o método que analisa o nome da classe em El e Cria o ClassDescriptor para ele como um método público do provedor El JPA ".


Por fim, chegamos à solução hackish, já foi sugerida, basta editar seus arquivos persistência.xml após o fato. Eu acredito que isso funcionaria (embora eu não tentei), mas é definitivamente uma opção.

Outras dicas

Eu tenho uma configuração em que um arquivo de guerra contém o arquivo persistence.xml. A solução já descrita aqui deve ser utilizável para o JAR, WAR's e EAR. JPA 2.0: Adicionando classes de entidade à unidade de persistência * de diferentes jares * automaticamente

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