bonjour les amis je trvail avec la technique jpa persistence et je veux faire l'ajout sur une des attributs d'une table de ma base de donnée
mais ça marche pas
je vous poser le code de l'entity et de l'interface et la sortie d'erreur ici s'il vous plait aider moi
sortie d'erreur :
[TopLink Info]: 2010.03.27 11:22:44.827--ServerSession(13185532)--TopLink, version: Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))
[TopLink Info]: 2010.03.27 11:22:45.771--ServerSession(13185532)--file:/home/anoir/NetBeansProjects/SGCPI/src/-jpaPU login successful
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Object: sgcpi.Consultant[iDCons=null] is not a known entity type.
at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:3212)
at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.persist(EntityManagerImpl.java:205)
at sgcpi.JFC.AJOUTER(JFC.java:242)
at sgcpi.JFC$1.actionPerformed(JFC.java:47)
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:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
voici l'entity
package sgcpi;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
*
* @author anoir
*/
@Entity
@Table(name = "CONSULTANT", catalog = "jpa", schema = "")
@NamedQueries({@NamedQuery(name = "Consultant.findAll", query = "SELECT c FROM Consultant c"), @NamedQuery(name = "Consultant.findByIDCons", query = "SELECT c FROM Consultant c WHERE c.iDCons = :iDCons"), @NamedQuery(name = "Consultant.findByAge", query = "SELECT c FROM Consultant c WHERE c.age = :age"), @NamedQuery(name = "Consultant.findByTelF", query = "SELECT c FROM Consultant c WHERE c.telF = :telF"), @NamedQuery(name = "Consultant.findByTelM", query = "SELECT c FROM Consultant c WHERE c.telM = :telM"), @NamedQuery(name = "Consultant.findByAdresse", query = "SELECT c FROM Consultant c WHERE c.adresse = :adresse"), @NamedQuery(name = "Consultant.findByEmail", query = "SELECT c FROM Consultant c WHERE c.email = :email"), @NamedQuery(name = "Consultant.findByTypeCons", query = "SELECT c FROM Consultant c WHERE c.typeCons = :typeCons"), @NamedQuery(name = "Consultant.findByNom", query = "SELECT c FROM Consultant c WHERE c.nom = :nom"), @NamedQuery(name = "Consultant.findByPrenom", query = "SELECT c FROM Consultant c WHERE c.prenom = :prenom"), @NamedQuery(name = "Consultant.findByMotPass", query = "SELECT c FROM Consultant c WHERE c.motPass = :motPass")})
public class Consultant implements Serializable {
@Transient
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "ID_Cons")
private Integer iDCons;
@Column(name = "Age")
private Integer age;
@Column(name = "Tel_F")
private Integer telF;
@Column(name = "Tel_M")
private Integer telM;
@Column(name = "Adresse")
private String adresse;
@Column(name = "Email")
private String email;
@Basic(optional = false)
@Column(name = "Type_Cons")
private String typeCons;
@Basic(optional = false)
@Column(name = "NOM")
private String nom;
@Basic(optional = false)
@Column(name = "PRENOM")
private String prenom;
@Basic(optional = false)
@Column(name = "Mot_Pass")
private String motPass;

public Consultant() {
}

public Consultant(Integer iDCons) {
this.iDCons = iDCons;
}

public Consultant(Integer iDCons, String typeCons, String nom, String prenom, String motPass) {
this.iDCons = iDCons;
this.typeCons = typeCons;
this.nom = nom;
this.prenom = prenom;
this.motPass = motPass;
}

public Integer getIDCons() {
return iDCons;
}

public void setIDCons(Integer iDCons) {
Integer oldIDCons = this.iDCons;
this.iDCons = iDCons;
changeSupport.firePropertyChange("IDCons", oldIDCons, iDCons);
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
Integer oldAge = this.age;
this.age = age;
changeSupport.firePropertyChange("age", oldAge, age);
}

public Integer getTelF() {
return telF;
}

public void setTelF(Integer telF) {
Integer oldTelF = this.telF;
this.telF = telF;
changeSupport.firePropertyChange("telF", oldTelF, telF);
}

public Integer getTelM() {
return telM;
}

public void setTelM(Integer telM) {
Integer oldTelM = this.telM;
this.telM = telM;
changeSupport.firePropertyChange("telM", oldTelM, telM);
}

public String getAdresse() {
return adresse;
}

public void setAdresse(String adresse) {
String oldAdresse = this.adresse;
this.adresse = adresse;
changeSupport.firePropertyChange("adresse", oldAdresse, adresse);
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
String oldEmail = this.email;
this.email = email;
changeSupport.firePropertyChange("email", oldEmail, email);
}

public String getTypeCons() {
return typeCons;
}

public void setTypeCons(String typeCons) {
String oldTypeCons = this.typeCons;
this.typeCons = typeCons;
changeSupport.firePropertyChange("typeCons", oldTypeCons, typeCons);
}

public String getNom() {
return nom;
}

public void setNom(String nom) {
String oldNom = this.nom;
this.nom = nom;
changeSupport.firePropertyChange("nom", oldNom, nom);
}

public String getPrenom() {
return prenom;
}

public void setPrenom(String prenom) {
String oldPrenom = this.prenom;
this.prenom = prenom;
changeSupport.firePropertyChange("prenom", oldPrenom, prenom);
}

public String getMotPass() {
return motPass;
}

public void setMotPass(String motPass) {
String oldMotPass = this.motPass;
this.motPass = motPass;
changeSupport.firePropertyChange("motPass", oldMotPass, motPass);
}

@Override
public int hashCode() {
int hash = 0;
hash += (iDCons != null ? iDCons.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 Consultant)) {
return false;
}
Consultant other = (Consultant) object;
if ((this.iDCons == null && other.iDCons != null) || (this.iDCons != null && !this.iDCons.equals(other.iDCons))) {
return false;
}
return true;
}

@Override
public String toString() {
return "sgcpi.Consultant[iDCons=" + iDCons + "]";
}

public void addPropertyChangeListener(PropertyChangeListener listener) {
changeSupport.addPropertyChangeListener(listener);
}

public void removePropertyChangeListener(PropertyChangeListener listener) {
changeSupport.removePropertyChangeListener(listener);
}



}
et le code d'interface:
package sgcpi;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.Object;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.swing.table.DefaultTableModel;
class JFC extends JFrame {

JTabbedPane onglets;
JPanel onglet1;
JPanel onglet2;
JButton AJOUTER,SUPPRIMER,Modifier,FERMER,ARCHIVE,SAVE;
JLabel CompteL,CompteL1,CompteL2,NomL,PrenomL,AdresseL,Type_ConsL;
JTextField NomTF,PrenomTF,AdresseTF,Type_ConsTF;
JTable table=new JTable();
JTable table1=new JTable();
JScrollPane sp=new JScrollPane();
JScrollPane sp1=new JScrollPane();
private Iterable<Object> IDds;
@SuppressWarnings("static-access")
JFC() {
onglets = new JTabbedPane();


onglet1 = new JPanel();
onglet1.setBackground(new Color(217, 233, 238));


AJOUTER=new JButton("AJOUTER");
AJOUTER= new JButton(new ImageIcon("/home/anoir/Bureau/icone/Mashup-MaXo/actions/add.png"));
onglet1.add(AJOUTER);
onglet1.setLayout(null);
AJOUTER.setBounds(5,560,100,90);
AJOUTER.setForeground(new Color(0,0,0));


AJOUTER.setBorderPainted(false);
AJOUTER.setContentAreaFilled(false);
AJOUTER.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
AJOUTER();
}
});

SUPPRIMER=new JButton("SUPPRIMER");///media/doc/etude/icone/Mashup-MaXo/actions/add.png
SUPPRIMER= new JButton(new ImageIcon("/home/anoir/Bureau/icone/Mashup-MaXo/actions/dialog-cancel.png"));
onglet1.add(SUPPRIMER);
onglet1.setLayout(null);
SUPPRIMER.setBounds(230,560,100,90);
SUPPRIMER.setForeground(new Color(0,0,0));
SUPPRIMER.setBorderPainted(false);
SUPPRIMER.setContentAreaFilled(false);
Modifier=new JButton(new ImageIcon("/home/anoir/Bureau/icone/Mashup-MaXo/actions/gtk-edit.png"));
onglet1.add(Modifier);

onglet1.setLayout(null);
Modifier.setBounds(460,560,100,90);
Modifier.setForeground(new Color(0,0,0));
Modifier.setBorderPainted(false);
Modifier.setContentAreaFilled(false);
FERMER=new JButton(new ImageIcon("/home/anoir/Bureau/icone/Mashup-MaXo/actions/system-suspend-hibernate.png"));
onglet1.add(FERMER);
onglet1.setLayout(null);
FERMER.setBounds(640,560,100,90);
FERMER.setForeground(new Color(0,0,0));

FERMER.setBorderPainted(false);
FERMER.setContentAreaFilled(false);
FERMER.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);

}
});
CompteL=new JLabel("GESTIONS DES INFIRMIER");
onglet1.add(CompteL);
onglet1.setLayout(null);
CompteL.setBounds(10,15, 700,120);
CompteL.setForeground(new Color(71,129,172));
//CompteL.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
CompteL.setIcon(new javax.swing.ImageIcon("/home/anoir/Bureau/icone/professional-icons/gwil40130.jpg"));
CompteL.setFont(new Font("Monotype Corsiva",Font.BOLD,30));



NomL=new JLabel("Nom :");
onglet1.add(NomL);

onglet1.setLayout(null);
NomL.setFont(new Font("Monotype Corsiva",Font.BOLD,20));
NomL.setForeground(new Color(51,129,172));
NomL.setBounds(10,140, 100, 30);


PrenomL=new JLabel("PRENOM :");
onglet1.add(PrenomL);

onglet1.setLayout(null);
PrenomL.setFont(new Font("Monotype Corsiva",Font.BOLD,20));
PrenomL.setForeground(new Color(51,129,172));
PrenomL.setBounds(10,155, 200, 90);
AdresseL=new JLabel("ADRESSE :");
onglet1.add(AdresseL);

onglet1.setLayout(null);
AdresseL.setFont(new Font("Monotype Corsiva",Font.BOLD,20));
AdresseL.setForeground(new Color(51,129,172));
AdresseL.setBounds(330,110, 200, 90);
Type_ConsL=new JLabel("Type_Consult:");
onglet1.add(Type_ConsL);

onglet1.setLayout(null);
Type_ConsL.setFont(new Font("Monotype Corsiva",Font.BOLD,20));
Type_ConsL.setForeground(new Color(51,129,172));
Type_ConsL.setBounds(330,155, 200, 90);
NomTF=new JTextField();

NomTF.setBounds(135,140, 180, 27);
NomTF.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
NomTF.requestFocus();

PrenomTF=new JTextField();

PrenomTF.setBounds(135, 185, 180, 27);
PrenomTF.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
AdresseTF=new JTextField();

AdresseTF.setBounds(480, 140, 180, 27);
AdresseTF.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
Type_ConsTF=new JTextField();

Type_ConsTF.setBounds(480, 185, 180, 27);
Type_ConsTF.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));



onglet1.add(NomTF);
onglet1.add(PrenomTF);
onglet1.add(AdresseTF);
onglet1.add(Type_ConsTF);
table.setAutoCreateRowSorter(true); //trier la table
table.setModel(new javax.swing.table.DefaultTableModel(new Object [][] { },new String [] {"IDCons", "NOM","PRENOM","Adresse","Type_Cons"}));
table.getColumnModel().getColumn(0).setPreferredWidth(50);
table.getColumnModel().getColumn(1).setPreferredWidth(100);
table.getColumnModel().getColumn(2).setPreferredWidth(100);
table.getColumnModel().getColumn(3).setPreferredWidth(100);
table.getColumnModel().getColumn(4).setPreferredWidth(100);
table.getTableHeader().setFont(new Font("Times New Roman",Font.BOLD,17));

table.getTableHeader().setReorderingAllowed(false);
table.setRowHeight(22);
table.setFont(new Font("Times New Roman",Font.BOLD,14));
table.setOpaque(false);
table.setForeground(new Color(33,53,105));
sp.setViewportView(table);
sp.setBounds(3,270,710,300);
sp.setOpaque(false);
onglet1.setLayout(null);
onglet1.add(sp);
onglet2 = new JPanel();
onglet2.setBackground(new Color(171, 233, 198));

CompteL1=new JLabel("GESTIONS DES COMPTES");

onglet2.add(CompteL1);

onglet2.setLayout(null);
CompteL1.setBounds(10,15, 700,120);
CompteL1.setForeground(new Color(71,129,172));
//CompteL1.setIcon(new javax.swing.ImageIcon("/media/doc/etude/icone/professional-icons/gwil40102.jpg"));
CompteL1.setFont(new Font("Monotype Corsiva",Font.BOLD,30));
AJOUTER=new JButton("AJOUTER");
AJOUTER= new JButton(new ImageIcon("/home/anoir/Bureau/icone/Mashup-MaXo/actions/add.png"));
onglet2.add(AJOUTER);
onglet2.setLayout(null);
AJOUTER.setBounds(10,60,100,90);
AJOUTER.setForeground(new Color(0,0,0));

AJOUTER.setBorderPainted(false);
AJOUTER.setContentAreaFilled(false);

onglets.addTab("GESTION DES COMPTES",onglet1);
//AJOUTER.setBounds(100,200,300,40);

onglets.addTab("MODIFICATION DE MOT DE PASSE",new ImageIcon(""),onglet2);



getContentPane().add(onglets);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(750,700);
setLocationRelativeTo(null); //pour centrer la fenetre
setResizable(false);

}


public static void main(String[] args) {
JFrame fen =new JFC();
fen.setVisible(true);
}
void AJOUTER(){
String erreur="";
if(NomTF.getText().isEmpty())
erreur+="Nom est vide !\n";
else
if(NomTF.getText().length()>25)
erreur+="Nom est déppassé 25 caractères !\n";

if(PrenomTF.getText().isEmpty())
erreur+="Prénom est vide !\n";
else
if(PrenomTF.getText().length()>25)
erreur+="Prénom est déppassè 25 caractères !";

if(AdresseTF.getText().isEmpty())
erreur+="Mot de passe est vide !\n";
else
if(AdresseTF.getText().length()>25)
erreur+="Mot de passe est déppassé 25 caractères !";
else
if(Type_ConsTF.getText().length()>25)
erreur+="Mot de passe est déppassé 25 caractères !";

if(erreur.isEmpty()){
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpaPU");
EntityManager em = emf.createEntityManager();
EntityTransaction transac = em.getTransaction();
transac.begin();
Consultant nouvelleInfermier = new Consultant();
nouvelleInfermier.setIDCons(null);
nouvelleInfermier.setNom(NomTF.getText());
nouvelleInfermier.setPrenom(PrenomTF.getText());
nouvelleInfermier.setAdresse(AdresseTF.getText());
nouvelleInfermier.setTypeCons(Type_ConsTF.getText());
em.persist(nouvelleInfermier);
transac.commit();
em.close();
emf.close();
NomTF.setText("");
PrenomTF.setText("");
AdresseTF.setText("");
Type_ConsTF.setText("");


Filtrage1();
}else
JOptionPane.showMessageDialog(this,erreur,"Erreur ...",JOptionPane.ERROR_MESSAGE);
}
void Filtrage1(){
while(table.getRowCount()>0){
((DefaultTableModel)table.getModel()).removeRow(0);
}
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpaPU");
EntityManager em = emf.createEntityManager();
Query query = em.createQuery("SELECT c FROM Consultant c WHERE c.nom like :nom and c.prenom like :prenom and c.adresse like :adresse and c.typeCons like :typeCons order by c.ID_Cons" );
query.setParameter("nom", NomTF.getText()+"%");
query.setParameter("prenom", PrenomTF.getText()+"%");
query.setParameter("nom",AdresseTF.getText()+"%");
query.setParameter("prenom", Type_ConsTF.getText()+"%");
java.util.List noms = query.getResultList();
Consultant c=null;
for (Object nom : noms) {
c=(Consultant)nom;
Object[] donnee = new Object[]{c.getIDCons(),c.getNom(),c.getPrenom(),c.getAdresse(),c.getTypeCons()};
((DefaultTableModel)table.getModel()).addRow(donnee);
}
em.close();
emf.close();

}


}