Tenho esse código que quando chega no em.persiste§ da uma exeção muito loca.
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package as.com.sisclinica.util;
import as.com.sisclinica.model.Convenios;
import as.com.sisclinica.model.DadosCadastrais;
import as.com.sisclinica.model.Endereco;
import as.com.sisclinica.model.Pacientes;
import as.com.sisclinica.model.Pronomes;
import com.sun.org.apache.bcel.internal.generic.IFEQ;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.swing.JOptionPane;
/**
*
* @author usuario
*/
public class GeraBanco {
/**
* @param args the command line arguments
*/
private String url = "jdbc:odbc:clinica";
private String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
private String user = "clinica";
private String pwd = "105031";//Senha do Banco de dados
private static Connection con = null;
public static void main(String[] args) {
Properties cfg = new Properties();
//cfg.setProperty("hibernate.hbm2ddl.auto", "create");
EntityManagerFactory emf = Persistence.createEntityManagerFactory("SisClinicaPU", cfg);
//EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyJpaExamplesPU",cfg);
EntityManager em = emf.createEntityManager();
try {
GeraBanco gb = new GeraBanco();
gb.conecta();
// Após estabelecermos a conexão com o banco de dados
// Utilizamos o método createStatement de con para criar o Statement
Statement stm = con.createStatement();
Statement stm2 = con.createStatement();
// Vamos executar o seguinte comando SQL :
String SQL = "Select * from DCLIN004 where PAC_CODI = 1";
String SQL2 = "Select * from DCLIN002";
// Definido o Statement, executamos a query no banco de dados
ResultSet rs = stm.executeQuery(SQL);
ResultSet rs2 = stm2.executeQuery(SQL2);
// O método next() informa se houve resultados e posiciona o cursor do banco
// na próxima linha disponível para recuperação
// Como esperamos várias linhas utilizamos um laço para recuperar os dados
rs.next();
rs2.next();
// Os métodos getXXX recuperam os dados de acordo com o tipo SQL do dado:
Endereco e = new Endereco();
e.setCep(rs.getString("PAC_CEPE"));//ok
e.setCidade(rs.getString("PAC_CIDA"));//ok
e.setLogradouro(rs.getString("PAC_ENDE"));//ok
e.setUf(rs.getString("PAC_ESTA"));//ok
em.merge(e);
DadosCadastrais dc = new DadosCadastrais();
dc.setDatanascimento(rs.getDate("PAC_NASC"));//ok
dc.setEstadocivil(rs.getString("PAC_CIVI"));//ok
dc.setSexo(rs.getString("PAC_SEXO"));//ok
dc.setTelefoneresidencial(rs.getString("PAC_FONE"));//ok
dc.setEndereco(e);
em.merge(dc);
Pacientes p = new Pacientes();
//p.setIdPaciente(rs.getInt("PAC_CODI"));//ok
p.setAltura(rs.getFloat("PAC_ALTU"));//ok
p.setAnamnese(rs.getString("PAC_ANAM"));//ok
p.setNome(rs.getString("PAC_NOME"));//ok
p.setPeso(rs.getFloat("PAC_PESO"));//ok
p.setProfissao(rs.getString("PAC_PROF"));//ok
Convenios c = new Convenios(rs2.getInt("CON_CODI"));
//String s = c.getNome();
p.setConvenio(c);//ok
p.setDadosCadastrais(dc);
Pronomes pronome = null;
String pro = rs.getString("PAC_SR");
if (pro.equals("")) {
pronome = new Pronomes(1);
} else if (pro.contentEquals("Sr")) {
pronome = new Pronomes(2);
} else if (pro.contentEquals("Sra")) {
pronome = new Pronomes(3);
} else if (pro.contentEquals("Stra")) {
pronome = new Pronomes(4);
} else if (pro.contentEquals("Dr.")) {
pronome = new Pronomes(5);
} else if (pro.contentEquals("Dra.")) {
pronome = new Pronomes(6);
} else if (pro.contentEquals("Prof")) {
pronome = new Pronomes(7);
}
p.setPronome(pronome);//ok
em.getTransaction().begin();
//em.merge(dc);
//em.merge(e);
em.persist(p);
em.getTransaction().commit();
System.out.println("Será q vai dar pau!!!");
// As variáveis tit, aut e totalFaixas contém os valores retornados
// pela query. Vamos imprimí-los
//System.out.println("O código do paciente é: "+ cod +" e o nome dele é " + nome);
} catch (SQLException e) {
// se houve algum erro, uma exceção é gerada para informar o erro
e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou
} finally {
try {
con.close();
} catch (SQLException onConClose) {
System.out.println("Houve erro no fechamento da conexão");
onConClose.printStackTrace();
}
}
em.close();
emf.close();
}
public void conecta() {
try {
Class.forName(driver);
con = DriverManager.getConnection(url, user, pwd);
} catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, "Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n Driver não encontrado!\n" + e, "ATENÇÃO", JOptionPane.WARNING_MESSAGE);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n Erro na Conexão com Banco\n" + e, "ATENÇÃO", JOptionPane.WARNING_MESSAGE);
}
}
}
e tenho o erro:
Será que alguém poderia me dar uma luz?
Obrigado desde de já!!!