Olá pessoal, estou fazendo uma aplicação simples utilizando JPA para saber se eu estou sabendo utilizar o mesmo. Mas, está dando erro. Segue abaixo o erro que aparece, as minhas duas classes, e o código sql para criar o BD e a tabela.
Utilizo o PostgreSQL 8.4 como BD, e adicionei a biblioteca do PostgreSQL, os jar…
Erro:
[color=red]
13/04/2010 12:55:03 org.hibernate.cfg.annotations.Version
INFO: Hibernate Annotations 3.3.1.GA
13/04/2010 12:55:04 org.hibernate.cfg.Environment
INFO: Hibernate 3.2.5
13/04/2010 12:55:04 org.hibernate.cfg.Environment
INFO: hibernate.properties not found
13/04/2010 12:55:04 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
13/04/2010 12:55:04 org.hibernate.cfg.Environment
INFO: using JDK 1.4 java.sql.Timestamp handling
13/04/2010 12:55:04 org.hibernate.ejb.Version
INFO: Hibernate EntityManager 3.3.2.GA
Exception in thread “AWT-EventQueue-0” javax.persistence.PersistenceException: No Persistence provider for EntityManager named jpa_sysPoliClinic
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
at model.Paciente.adicionarPaciente(Paciente.java:72)
at viewControl.AdicionarPaciente.btnCadastrarActionPerformed(AdicionarPaciente.java:117)
at viewControl.AdicionarPaciente.access$100(AdicionarPaciente.java:20)
at viewControl.AdicionarPaciente$FormListener.actionPerformed(AdicionarPaciente.java:105)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
[/color]
Classe: AdicionarPaciente
package viewControl
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* AdicionarPaciente.java
*
* Created on 12/04/2010, 20:38:10
*/
package viewControl;
import model.Paciente;
/**
*
* @author Proprietário
*/
public class AdicionarPaciente extends javax.swing.JFrame {
/** Creates new form AdicionarPaciente */
public AdicionarPaciente() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jtfNome = new javax.swing.JTextField();
jtfTelefone = new javax.swing.JTextField();
jtfEndereco = new javax.swing.JTextField();
btnCadastrar = new javax.swing.JButton();
FormListener formListener = new FormListener();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Nome:");
jLabel2.setText("Telefone:");
jLabel3.setText("Endereço:");
btnCadastrar.setText("Cadastrar");
btnCadastrar.addActionListener(formListener);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(jLabel3)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jtfTelefone, javax.swing.GroupLayout.DEFAULT_SIZE, 207, Short.MAX_VALUE)
.addComponent(jtfNome)
.addComponent(jtfEndereco)))
.addComponent(btnCadastrar))
.addContainerGap(37, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel1)
.addComponent(jtfNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(jtfTelefone, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(jtfEndereco, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(47, 47, 47)
.addComponent(btnCadastrar)
.addContainerGap(74, Short.MAX_VALUE))
);
pack();
}
// Code for dispatching events from components to event handlers.
private class FormListener implements java.awt.event.ActionListener {
FormListener() {}
public void actionPerformed(java.awt.event.ActionEvent evt) {
if (evt.getSource() == btnCadastrar) {
AdicionarPaciente.this.btnCadastrarActionPerformed(evt);
}
}
}// </editor-fold>
private void btnCadastrarActionPerformed(java.awt.event.ActionEvent evt) {
Paciente p = new Paciente();
p.setNome(jtfNome.getText());
p.setEndereco(jtfEndereco.getText());
p.setTelefone(jtfTelefone.getText());
p.adicionarPaciente(p);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new AdicionarPaciente().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton btnCadastrar;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JTextField jtfEndereco;
private javax.swing.JTextField jtfNome;
private javax.swing.JTextField jtfTelefone;
// End of variables declaration
}
Classe: Paciente
package model
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package model;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Persistence;
/**
*
* @author Proprietário
*/
@Entity
public class Paciente implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String nome;
private String telefone;
private String endereco;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Paciente)) {
return false;
}
Paciente other = (Paciente) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
public void adicionarPaciente(Paciente p){
/* System.out.println(p.getNome());
System.out.println(p.getTelefone());
System.out.println(p.getEndereco());
*/
nome = p.getNome();
endereco = p.getEndereco();
telefone = p.getTelefone();
EntityManagerFactory fabricaDAO = Persistence.createEntityManagerFactory("jpa_sysPoliClinic");
EntityManager dao = fabricaDAO.createEntityManager();
dao.getTransaction().begin();
dao.persist(p);
dao.getTransaction().commit();
}
@Override
public String toString() {
return "model.Paciente[id=" + id + "]";
}
/**
* @return the nome
*/
public String getNome() {
return nome;
}
/**
* @param nome the nome to set
*/
public void setNome(String nome) {
this.nome = nome;
}
/**
* @return the telefone
*/
public String getTelefone() {
return telefone;
}
/**
* @param telefone the telefone to set
*/
public void setTelefone(String telefone) {
this.telefone = telefone;
}
/**
* @return the endereco
*/
public String getEndereco() {
return endereco;
}
/**
* @param endereco the endereco to set
*/
public void setEndereco(String endereco) {
this.endereco = endereco;
}
}
BD e tabela Paciente
-- Database: "jpa_sysPoliClinic"
-- DROP DATABASE "jpa_sysPoliClinic";
CREATE DATABASE "jpa_sysPoliClinic"
WITH OWNER = postgres
ENCODING = 'UTF8'
LC_COLLATE = 'Portuguese, Brazil'
LC_CTYPE = 'Portuguese, Brazil'
CONNECTION LIMIT = -1;
-- Table: "Paciente"
-- DROP TABLE "Paciente";
CREATE TABLE "Paciente"
(
codigo serial NOT NULL,
nome text,
telefone text,
endereco text,
CONSTRAINT cod_paciente PRIMARY KEY (codigo)
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Paciente" OWNER TO postgres;
[color=red]Pessoal, por favor, me ajudem…!!
Agradeço desde já,
Dina[/color]
MUITO OBRIGADA!!!