Hibernate + jpa Erro[ resolvido]

Erro

Informações: Could not find any META-INF/persistence.xml file in the classpath
Exception in thread “main” javax.persistence.PersistenceException: No Persistence provider for EntityManager named USUARIO
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
at com.Main.main(Main.java:13)
Java Result: 1

estou usando netbeans,indo na aba “Arquivos” ja coloquei na pasta SRC/META-INF/ e web/META-INF/, msm assim nao encontra o arquivo.

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
 
<persistence version="2.0"
    xmlns="http://java.sun.com/xml/ns/persistence" 
    mlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
                        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
     
    <persistence-unit name="USUARIO" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
         
        <properties>
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/>
            <property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.ClientDriver"/>
            <property name="hibernate.connection.url" value="jdbc:derby://localhost:1527/Teste"/>
            <property name="hibernate.connection.username" value="administrador"/>
            <property name="hibernate.connection.password" value="admin"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
        
    </persistence-unit>
</persistence>

Main

package com;
 
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
 
public class Main {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("USUARIO");
        EntityManager em = emf.createEntityManager();
 
        try {
            em.getTransaction().begin();
             
            User user = new User();
            user.setName("abc123");
            user.setSobrenome("bill");
             
            em.persist(user);
             
            em.getTransaction().commit();
        }
        catch (Exception e) {
            em.getTransaction().rollback();
            e.printStackTrace();
        }
        finally{
            emf.close();
        }
         
        System.out.println("It is over");
    }
}

User

package com;
 
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
 
@Entity
@Table(name="USUARIO")
public class User implements Serializable{
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
     
    @Column
    private String name;
     
    @Column
    private String sobrenome;
     
    @Override
    public boolean equals(Object obj) {
        if(obj instanceof User){
            User user = (User) obj;
            return user.getId() == this.getId();
        }
         
        return false;
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }

    public String getSobrenome() {
        return sobrenome;
    }

    public void setSobrenome(String sobrenome) {
        this.sobrenome = sobrenome;
    }
 
}

b10machado, coloca o seu persistence.xml no diretório SRC/conf/

vlw cara!!! obrigado.

ta com esse erro agora!!

public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("nomeDaPersistenceUnit");
        EntityManager em = emf.createEntityManager();
 
        try {
            em.getTransaction().begin();
             
            User user = new User();
            user.setNome("abc123");
            user.setSobrenome("bill");
             
           
           [b] em.persist(user);[/b] //nessa linha da pau!!
             
            em.getTransaction().commit();
        }
        catch (Exception e) {
            em.getTransaction().rollback();
            e.printStackTrace();
        }
        finally{
            emf.close();
        }
         
        System.out.println("It is over");
    }

no printStackTrace();

so aparece isso :s

[quote]

Hibernate: insert into USUARIO1 (id, nome, sobrenome) values (default, ?, ?)
[/quote]

Aí no seu main você rodou com essa linha assim mesmo:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("nomeDaPersistenceUnit");

??

sim por causa do meu persistence

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="nomeDaPersistenceUnit">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/>
            <property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.ClientDriver"/>
            <property name="hibernate.connection.url" value="jdbc:derby://localhost:1527/Teste"/>
            <property name="hibernate.connection.username" value="administrador"/>
            <property name="hibernate.connection.password" value="admin"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
        
        
    </persistence-unit>
</persistence>

meio doido, a tabela sem nenhum dado da pau tando com o set id na mao ou por anotation, inserir o 1 registro na mao no banco, e ai teste o programa com o set id na mao no indice 2 inseriu normal, voltei ao anotation e deu pau… to mais perdido q cego em tiroteio…

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="nomeDaPersistenceUnit">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/>
            <property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.ClientDriver"/>
            <property name="hibernate.connection.url" value="jdbc:derby://localhost:1527/Teste"/>
            <property name="hibernate.connection.username" value="administrador"/>
            <property name="hibernate.connection.password" value="admin"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>
package com;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
 
@Entity
@Table(name="USUARIO1")
public class User{
    @Id
    //@GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="id")
    private int id;
     
    @Column(name="nome")
    private String nome;
     
    @Column(name="sobrenome")
    private String sobrenome;
     
    @Override
    public boolean equals(Object obj) {
        if(obj instanceof User){
            User user = (User) obj;
            return user.getId() == this.getId();
        }
         
        return false;
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
 
    public String getSobrenome() {
        return sobrenome;
    }

    public void setSobrenome(String sobrenome) {
        this.sobrenome = sobrenome;
    }
 
}
package com;
 
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
 
public class Main {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("nomeDaPersistenceUnit");
        EntityManager em = emf.createEntityManager();
 
        try {
            em.getTransaction().begin();
             
            User user = new User();
            user.setId(2);
            user.setNome("Rafsrl");
            user.setSobrenome("doido");
             
            em.persist(user);
             
            em.getTransaction().commit();
        }
        catch (Exception e) {
            em.getTransaction().rollback();
            e.printStackTrace();
        }
        finally{
            emf.close();
        }
        System.out.println("It is over");
    }}

pessoal achei onde esta o problema mais na a soluçao

@Id  
    @GeneratedValue(strategy=GenerationType.AUTO)  
    private int id;  

nao esta gerando o id corretamente, alguem sabe como funciona essa parte para gerar automaticamente…

@Id
@SequenceGenerator(name = “NOMEDATABELA_GENERATION”, sequenceName = “nome_da_tabela_id_seq”, allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = “NOMEDATABELA_GENERATION”)
@Column(name = “id”)

poe isso ae no id (primary key), e tem que configurar no banco ele como sequence.

cara essa é minha tabela, me da uma ajuda que eu nao consegui

tb_usuario
smallint id autoincrement start 1 increment 1
varchar nome
varchar sobrenome

@Id (aki blz)
@SequenceGenerator(name = “tb_usuario_GENERATION”, sequenceName = “nome_da_tabela_id_seq”(nao entendi aqui), allocationSize = 1)

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = “tb_usuario_GENERATION”)
@Column(name = “id”)

Muda no strategy de .SEQUENCE para .AUTO

@GeneratedValue(strategy = GenerationType.AUTO, generator = “tb_usuario_GENERATION”)

e pode tirar o sequenceName la do SequenceGenerator, na verdade, pode tirar o @SequenceGenerator todinho, porque aquilo ali eu uso no oracle. Não sei qual Database você está usando.

Tira o generator também, deixa assim e faz um teste.

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;

@Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "USUARIO12_GENERATION")
    @Column(name = "id")
    private int id;

deu certo nao :S, to usando o banco derby do netbeans

nesse tbm :s

Xiiiii, de derby sei nada…vou ter que apelar pro google…hehehe…se eu achar algo posto aqui xD fica triste nao, vai dar tudo certo ´-´

Coloca so assim entao:

@Id
@GeneratedValue
private Integer id;

ve se funfa ‘-’

Tem certeza que o problema é na anotacao ?

Dei uma revisada nas exceptions que voce postou, e percebi isso:

Caused by: java.sql.SQLIntegrityConstraintViolationException: A coluna ‘ID’ não aceita valor nulo.
at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.executeUpdate(Unknown Source)
at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:33)
… 16 more

Nao pode inserir valor null.

e em outras exceptions erro de EntityManager…

Tem certeza que são as anotações ?

sim pq se eu der set no id na mao nao da pau :S ontem eu fiz d alguma forma pelo gerar numero so q era tipo 23458 , 34900 e etc

Boa tarde, como está usando o derby, recomendo deixar assim

@GeneratedValue(strategy=GenerationType.AUTO) 

E Retirar o

@NotNull 

caso tenha

Exclua a tabela do derby e configure o persistence.xml com essa propriedade

<property name="hibernate.hbm2ddl.auto" value="update"/>

Para ele criar a tabela e criar uma forma automática de gerar os valores da pk(uma sequence interna dele).

Espero ter ajudado.