Mudar anotações do pojo em tempo de execução com servidor de aplicação e JavaSE

4 respostas
C

Pessoal tenho que alterar as anotações no meu pojo em tempo de execução sem servidor de aplicação funciona
fico assim.

Object h = new net.vidageek.mirror.dsl.Mirror().on(anotacao).get().field("h");
            LinkedHashMap memberValues = (LinkedHashMap)new net.vidageek.mirror.dsl.Mirror().on(h).get().field("memberValues");
            memberValues.put("name", "nome da tabela");
            memberValues.put("catalog", "banco de dados");
            System.out.println("Depois @Table(name): "   +Usuario.class.getAnnotation(Table.class).name());
            System.out.println("Depois @Table(catalog): "+Usuario.class.getAnnotation(Table.class).catalog());

            EntityManagerFactory emf = Persistence.createEntityManagerFactory("SelectTestePU");
            EntityManager em = emf.createEntityManager();
            em.getTransaction().begin();

Mais eu gostaria que funcionasse com o servidor de aplicação usando EJB com JPA e JTA mais não funciona com minha anotação de @PersistenceContext(unitName = "PU"), ou seja, com servidor de aplicação tem :?: ou não tem jeito :?:

4 Respostas

B

muito doido isso :slight_smile:

vc poderia simplesmente alterar as propriedades via AnnotationConfiguration . lá mesmo onde vc pega o session factory.

C

bobmoe um exemplo

B

bom isso é jpa, tom mais acostumado com hibernate. mas a idéia é a mesma.
vc vai definir no Persistence.xml dois persistence-unit, ou seja, uma configuração pra cada banco. E ai pega um entity manager específico pra cada um.

C

Não gostaria de criar outra unidade de persistencia gostaria de ficar so com uma e com ela ir so alterando as anotações do pojo, como nome da tabela e o nome do banco de dados em tempo de execução … so que com ejb isso não da certo pq a JTA não deixa e não achei ainda o modo de alterar antes de ela criar o contexto de persistencia.

Se pintar alguma ideia a mais ??? obrigado.

Criado 18 de dezembro de 2009
Ultima resposta 18 de dez. de 2009
Respostas 4
Participantes 2