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/
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");
}
Hibernate: insert into USUARIO1 (id, nome, sobrenome) values (default, ?, ?)
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at org.hibernate.tool.hbm2ddl.DatabaseMetadata.getTableMetadata(DatabaseMetadata.java:105)
at org.hibernate.cfg.Configuration.generateSchemaUpdateScript(Configuration.java:948)
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:140)
at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:314)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
at com.Main.main(Main.java:13)
Caused by: java.sql.SQLException: Lançada a exceção ‘java.sql.SQLException: Não foi possível obter o bloqueio dentro do tempo requerido.’ ao avaliar a expressão.
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.DatabaseMetaData.getTables(Unknown Source)
at org.hibernate.tool.hbm2ddl.DatabaseMetadata.getTableMetadata(DatabaseMetadata.java:67)
… 10 more
Caused by: org.apache.derby.client.am.SqlException: Lançada a exceção ‘java.sql.SQLException: Não foi possível obter o bloqueio dentro do tempo requerido.’ ao avaliar a expressão.
at org.apache.derby.client.am.Statement.completeExecute(Unknown Source)
at org.apache.derby.client.net.NetStatementReply.parseEXCSQLSTTreply(Unknown Source)
at org.apache.derby.client.net.NetStatementReply.readExecuteCall(Unknown Source)
at org.apache.derby.client.net.StatementReply.readExecuteCall(Unknown Source)
at org.apache.derby.client.net.NetStatement.readExecuteCall_(Unknown Source)
at org.apache.derby.client.am.Statement.readExecuteCall(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.flowExecute(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.executeQueryX(Unknown Source)
at org.apache.derby.client.am.DatabaseMetaData.executeCatalogQuery(Unknown Source)
at org.apache.derby.client.am.DatabaseMetaData.getTablesX(Unknown Source)
… 12 more
Caused by: org.apache.derby.client.am.SqlException: Não foi possível obter o bloqueio dentro do tempo requerido.
… 22 more
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
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.