Estou tentando criar um banco de dados(MySql) com hibernate no Eclipse. Já tentei muitas coisa já não sei onde pode ser o erro, quando clico em database connnection na aba data source explorer e dou um new, seleciono o tipo SQLServer e coloco as seguintes configurações:
Data base: teste
Host: localhost
port Number: 1433
marco o use integrated authentication
Connectio URL: jdbc:sqlserver://localhost:1433;databaseName=teste
clico em test connection e recebo o erro:
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:627)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.createConnection(JDBCConnection.java:213)
at org.eclipse.datatools.connectivity.DriverConnectionBase.internalCreateConnection(DriverConnectionBase.java:105)
at org.eclipse.datatools.connectivity.DriverConnectionBase.open(DriverConnectionBase.java:54)
at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.open(JDBCConnection.java:73)
at org.eclipse.datatools.enablement.msft.internal.sqlserver.connection.JDBCSQLServerConnectionFactory.createConnection(JDBCSQLServerConnectionFactory.java:27)
at org.eclipse.datatools.connectivity.internal.ConnectionFactoryProvider.createConnection(ConnectionFactoryProvider.java:83)
at org.eclipse.datatools.connectivity.internal.ConnectionProfile.createConnection(ConnectionProfile.java:359)
at org.eclipse.datatools.connectivity.ui.PingJob.createTestConnection(PingJob.java:76)
at org.eclipse.datatools.connectivity.ui.PingJob.run(PingJob.java:59)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Alguem pode me ajudar?
Adiciona o driver do SqlServer no seu projeto. Leia o erro e vai ver que ele não encontra a classe SQLServerDriver que pertence ao pacote do Driver.
Adicionei o driver.
Este é meu código:
package entities;
import javax.persistence.*;
@Entity
@Table(name=“testandoHibernate”)
public class ParaPersistir {
@Id
@GeneratedValue
int id;
String nome;
double preco;
public int getId() {
return id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public double getPreco() {
return preco;
}
public void setPreco(double preco) {
this.preco = preco;
}
}
package testandoAPesistencia;
import java.util.Properties;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import entities.ParaPersistir;
public class TestePesist {
public static void main(String[] args){
Properties prop = new Properties();
prop.setProperty("com.mysql.jdbc.SQLServerDriver", "jdbc:mysql://localhost/teste");
EntityManagerFactory factory = Persistence.createEntityManagerFactory("teste", prop);
EntityManager em = factory.createEntityManager();
ParaPersistir p = new ParaPersistir();
p.setNome("camiseta");
p.setPreco(12.23);
em.getTransaction().begin();
em.persist(p);
em.getTransaction().commit();
}
}
Tomei esse erro:
0 [main] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.5.0-Final
12 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.5.0-Final
14 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found
17 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
20 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
115 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
120 [main] INFO org.hibernate.ejb.Version - Hibernate EntityManager 3.5.0-Final
Exception in thread “main” javax.persistence.PersistenceException: No Persistence provider for EntityManager named Lisboa
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at testandoAPesistencia.TestePesist.main(TestePesist.java:18)
Mas você vai usar SQLServer ou MYSQL?
Usou o driver do SqlServer e a url de conexão para o MySql
Não pode, ou SqlServer ou MySql
prop.setProperty("com.mysql.jdbc.SQLServerDriver", "jdbc:mysql://localhost/teste");
prop.setProperty(“com.mysql.jdbc.Driver”, “jdbc:mysql://localhost:3306/teste”);
Corrigi é que tentei tanta coisa já…mals…
Porem, continua o mesmo erro…
O persistence.xml está assim:
org.hibernate.ejb.HibernatePersistence
Encontrei o erro aqui http://www.guj.com.br/java/229958-erro-no-persistence-provider-for-entitymanager-named-livraria
Porem, agora estou com outro erro:
711 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=root, password=****, autocommit=true, release_mode=auto}
2801 [main] WARN org.hibernate.cfg.SettingsFactory - Could not obtain connection to query metadata
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.ConnectException
MESSAGE: Connection refused: connect
STACKTRACE:
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
Verifique se o serviço de banco de dados está no ar.
Me desculpe a ignorancia mas como subo o serviço sql no eclipse?
minhas classes estão da seguinte forma:
package entities;
import javax.persistence.*;
import javax.swing.JOptionPane;
@Entity
public class ParaPersistir {
@Id
@GeneratedValue
@Column( name = "ID", nullable = false )
int id;
String nome;
double preco;
public int getId() {
return id;
}
public String gSetNome() {
return nome;
}
public void setId(int id) {
this.id = id;
}
public void setNome(String nome) {
this.nome = nome;
}
public double getPreco() {
return preco;
}
public void setPreco(double preco) {
this.preco = preco;
}
}
import java.sql.*;
import java.util.Properties;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import entities.ParaPersistir;
public class TestePesist {
public static void main(String[] args){
Properties prop = new Properties();
prop.setProperty("com.mysql.jdbc.Driver", "jdbc:mysql://localhost:3306/teste");
EntityManagerFactory factory = Persistence.createEntityManagerFactory("teste", prop);
EntityManager em = factory.createEntityManager();
ParaPersistir p = new ParaPersistir();
p.setId(2);
p.setNome("camiseta");
p.setPreco(12.23);
em.getTransaction().begin();
em.persist(p);
em.getTransaction().commit();
}
}
Estou tomando o seguinte erro:
No momento que “em.persist§;”
2966 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 1146, SQLState: 42S02
2966 [main] ERROR org.hibernate.util.JDBCExceptionReporter - Table ‘teste.parapersistir’ doesn’t exist
Exception in thread “main” javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not insert: [entities.ParaPersistir]
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1179)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1112)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1118)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:618)
at testandoAPesistencia.TestePesist.main(TestePesist.java:30)
como faço para nao deixar o hibernate excluir um registro pai que possui registros filhos ?
Obrigado a todos que me ajudaram consegui configurar… Thanks…