Persistence - EntityManager e EntityManagerFactory = null

4 respostas
ynaue

Oi pessoal!!
Ainda estou toda perdida nesse negocio de EntityManager e EntityManagerFactory. :cry:
Alguem pode me ajudar????
Eles estão retornando null

Estou utilizando o Netbeans 5.5 + Sun Java System Application Server 9 + Toplinik Essencial (que vem nele mesmo) + BD Postgres

Segundo os artigos que li usando isso eu poderia fazer criar o EntityManager usando anotação só que não esta dando certo!!! :cry: Eles sempre retornam Null

Ja fiz assim:
@PersistenceUnit(unitName="WebApplication1PU")
  private EntityManagerFactory emf;

 public TesteDAO() {
        public boolean inserir(Teste vo ) throws PersistenceException {
        try {
            EntityManager manager = emf.createEntityManager(); 
            EntityTransaction tx = manager.getTransaction();
            .....
assim:
@PersistenceContext
    EntityManager manager;

     public TesteDAO() {
       public boolean inserir(Teste vo ) throws PersistenceException {
        try {
            EntityTransaction tx = manager.getTransaction();
            .....

E assim (colocando o UnitName):

@PersistenceContext(unitName="WebApplication1PU")
    EntityManager manager;
     
     public TesteDAO() {
         public boolean inserir(Estrutura vo ) throws PersistenceException {
        try {
            EntityTransaction tx = manager.getTransaction();
           .....

[color=darkred]Todos dão que o Manager esta igual a Nulo[/color]

Tb testei esses 3 modos com o Persistence.xml assim:

<persistence-unit name="WebApplication1PU">
   <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
        <class>vo.Teste</class>       
        <properties>
            <property name="toplink.jdbc.url" value="jdbc:postgresql://lalala.lalal.lala.br:5432/bdg"/>
            <property name="toplink.jdbc.user" value="usuario"/>
            <property name="toplink.jdbc.driver" value="org.postgresql.Driver"/>
            <property name="toplink.jdbc.password" value="senha"/>
        </properties>
    </persistence-unit>
</persistence>
e assim com JTA:
<persistence-unit name="WebApplication1PU" transaction-type="JTA">
<provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
    <jta-data-source>Conexao</jta-data-source>
    <properties>
      <property name="toplink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
</persistence>

E não muda nada continua dando null.
Alguem pode me ajudar????

4 Respostas

rodolfoliviero

EntityManagerFactory emf = Persistence.createEntityManagerFactory(“manager”);

EntityManager em = emf.createEntityManager();

você so pode usar esses tipos de anotacao se vc tiver usando um as como o jboss pois ela fica responsavel por fazer a injeçao de dependencia

ynaue

Eu estava fazendo exatemente isso e colocando o Factory em um Singleton e estava funcionando mas me disseram que não era o melhor jeito de se fazer isso.

Que era para usar o JEE5 e as anotações, para usar a injeção de dependencia. E que isso poderia resolver uns problemas que estou tendo.

C

Você está tentando injetar o EntityManager em um Session Bean?

Só funciona em SessionBeans e Servlets 2.5… senão, não funciona! Se você quiser usá-los fora dessas classes, terá que fazer do outro jeito mesmo, criando na mão.

[]s

ynaue

É isso mesmo!!!
Se eu colocar um servlet ele funciona!!!

Desculpa minha ignorancia, mas pq???

Obrigada!!!

Criado 19 de dezembro de 2006
Ultima resposta 2 de jan. de 2007
Respostas 4
Participantes 3