Boa tarde.
Seguinte, fiz uma configuraçãozinha persistence XML, cirei as classes e fiz um main para inserir um registro no sqlserver 2008.
Não acontece nenhum erro, e o netbeans me diz que o objeto foi construído com sucesso, porém ao logar no sqlserver2008 ( com o banco de dados já criado no próprio sql), a tabela que montei não é criada e obviamente o registro que persisti também não é gerado.
Eu (iniciante), e mais uns amigos que trabalham com java demos uma olhada, debugamos, porém eles me disseram que está tudo ok.
Abaixo o source do persistence, que é onde penso que deve haver algum erro.
[i]<?xml version="1.0" encoding="UTF-8"?>
org.hibernate.ejb.HibernatePersistence
jpateste.entity.Pessoa
<properties>
<!-- Define o tipo de Dialeto a ser considerado no BD -->
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>
<!-- Define que, qualquer alteração na minha tabela o JPA atualizará minha entidade -->
<property name="hibernate.hbm2ddl.auto" value="update"/>
<!-- Permite a visualização do SQL no console -->
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<!-- Dados de acesso ao BD -->
<property name="javax.persistence.jdbc.driver" value="net.sourceforge.jtds.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:jtds:sqlserver://localhost:1433/JPAteste"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.password" value="sa"/>
</properties>
[/i]
Alguma alma caridosa poderia me ajudar?
Só com o persistence.xml é impossível saber, né meu caro.
Qual a estrutura da classe?
Posta os códigos das classes envolvidas na questão
//Classe Pessoa
[i]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=“TB_Pessoa”)
public class Pessoa implements Serializable {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name=“ID_Pessoa”)
private Long id;
@Column(name=“Idade_Pessoa”)
private byte idade;
@Column(name=“Nome_Pessoa”)
private String nome;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public byte getIdade() {
return idade;
}
public void setIdade(byte idade) {
this.idade = idade;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
[/i]
//Classe Onde crio as conexões
[i]
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import jpateste.entity.Pessoa;
public class TesteInsere {
public static void main(String args[]) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("sistemaSQLServer");
EntityManager em = emf.createEntityManager();
Pessoa teste = new Pessoa();
teste.setIdade((byte) 4);
teste.setNome("Poca gente");
em.getTransaction().begin();
em.persist(teste);
em.getTransaction().commit();
em.close();
}
}
[/i]
Valeu!
Segue abaixo a Exceprion lançada pelo NetBenas:
debug:
log4j:WARN No appenders could be found for logger (org.hibernate.type.BasicTypeRegistry).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread “main” javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Cannot open connection
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147)
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1224)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:63)
at jpateste.teste.TesteInsere.main(TesteInsere.java:19)
Caused by: org.hibernate.exception.JDBCConnectionException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:60)
… 1 more
Caused by: java.sql.SQLException: Network error IOException: Connection refused: connect
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.(ConnectionJDBC2.java:410)
at net.sourceforge.jtds.jdbc.ConnectionJDBC3.(ConnectionJDBC3.java:50)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
… 6 more
Caused by: 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)
at java.net.Socket.connect(Socket.java:529)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:307)
at net.sourceforge.jtds.jdbc.SharedSocket.(SharedSocket.java:257)
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.(ConnectionJDBC2.java:311)
… 12 more
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 2 minutos 33 segundos)
Apesar de no final ele aparecer construído com sucesso, ele não insere o registro no banco.
Camarada, siga estas dicas http://guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor
A parte do warning é do jar do log4j que não está no projeto.
Agora, o que chama a atenção e, provavelmente, seja o motivo do teu problema, é isto
Caused by: java.sql.SQLException: Network error IOException: Connection refused: connect
Ou seja, parece que o teu banco de dados não está aceitando conexões ou está offline ou a instância não é a que está rodando ou está errado o nome ou o firewall está impedindo a conexão
Certo.
Eu já tinha tentado desativar o firewall, mas nada adiantou.
Vou dar mais uma olhada na instância, mas pelo que vi está tudo ok.
De qualquer forma agradeço a ajuda, assim que resolver eu posto.
Bom dia.
Resolvido!
No configuration Manager reparei que na aba Protocols for MSSQLServer do SQLSERVER Network configuration, o TCP/IP estava desativado.
Habilitei ele e restartei o serviço , ai a aplicação rodou sem problemas.
Caso alguém tenha problemas parecidos segue abaixo um link de um tópico que me ajudou:
http://www.guj.com.br/java/228640-resolvido-conexao-jdbc-sql-server-2008
Grato pela ajuda drsmachado.