2010-08-24 4 views
2

J'utilise NetBeans 6.9 et Hibernate et je suis en train d'insérer des valeurs dans une base de données (postgres) mais je reçois l'exception suivante:instruction d'insertion ne fonctionne pas dans Mise en veille prolongée

 
INFO: Not binding factory to JNDI, no JNDI name configured 
Exception in thread "main" org.hibernate.MappingException: Unknown entity: SELECTPACK.beanClass 
     at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:550) 
     at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1338) 
     at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:98) 
     at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187) 
     at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:3 

et mon HBM .xml est donné ci-dessous

<class name="SELECTPACK.beanClass" table="login"> 
    <id column="id" name="id"> 
     <generator class="increment"/> 
    </id> 
    <property name="username" column="username"/> 
    <property name="password" column="password"/> 
</class> 

mon fichier cfg.xml est donné ci-dessous

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> 
     <property name="hibernate.connection.driver_class">org.postgresql.Driver</property> 
     <property name="hibernate.connection.url">jdbc:postgresql://192.168.1.100:54321/postgres</property> 
     <property name="hibernate.connection.username">postgres</property> 
     <property name="hibernate.connection.password">dbserver</property> 
     <property name="hibernate.show_sql">true</property> 
     <mapping resource="SELECTPACK/select.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 

ma classe POJO

package SELECTPACK; 

public class beanClass { 
    private int id; 
    private String username; 
    private String password; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 
} 

et entendre est ma principale classe

package SELECTPACK; 

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.Transaction; 
import org.hibernate.cfg.Configuration; 

public class selectMainClass { 

    public static void main(String... args) { 
     SessionFactory sessionFact = new Configuration().configure().buildSessionFactory(); 
     Session ses = sessionFact.openSession(); 
     Transaction tx = ses.beginTransaction(); 
     beanClass bean = new beanClass(); 
     bean.setPassword("hi...."); 
     bean.setUsername("hi...."); 
     ses.save(bean); 
     tx.commit(); 
     /*String query = "select * from login"; 
     Query qry = ses.createQuery(query); 
     ArrayList list = (ArrayList) qry.list(); 
     for (int i = 0; i < list.size(); i++) { 
      System.out.println(list.get(i)); 
     }*/ 
     ses.close(); 
    } 
} 

Je ne comprends pas quel est le problème.

+1

Vous ne montrez pas votre fichier hibernate.cfg.xml. Je suppose que vous ne pointez pas votre entité dans ce fichier. –

+0

merci pour votre réponse ... donnez-moi un exemple en utilisant hibernate ... – Mouli

Répondre

3

L'entité SELECTPACK.beanClass n'est pas reconnue comme une entité valide et il doit y avoir une pile-trace précédente dans le journal (lors de la création du SessionFactory) indiquant l'erreur réelle. Recherchez une trace précédente. Mais les causes possibles:

  • la table n'existe pas
  • une de la colonne est mappée pas là

En dehors de cela, j'ai quelques remarques mineures (qui ne sont pas le problème):

  • traditionnellement, les boîtiers sont en minuscules (c.-à-d. selectpack); Le nom de la classe Java doit commencer par une lettre majuscule (par exemple, BeanClass);
  • il est recommandé de mapper une classe selectpack.BeanClass dans un fichier de mappage selectpack/BeanClass.hbm.xml (pour faciliter la maintenance);
  • ma suggestion serait d'utiliser le générateur native dans le fichier de mappage.

Quelque chose comme ça pour la classe:

package selectpack; 

public class BeanClass { 
    private int id; 
    private String username; 
    private String password; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 
} 

Et pour le fichier de mapping:

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
    <class name="selectpack.BeanClass" table="login"> 
     <id column="id" name="id"> 
      <generator class="native"/> 
     </id> 
     <property name="username" column="username"/> 
     <property name="password" column="password"/> 
    </class> 
</hibernate-mapping> 

Bien sûr, mettre à jour le hibernate.cfg.xml en conséquence:

<mapping resource="selectpack/BeanClass.hbm.xml"/> 

Mais J'ai dit, ces remarques ne sont pas directement lié au problème.

+0

Bien (+1) Bonjour Pascal, si possible, votez pour ce numéro http://opensource.atlassian.com/projects/hibernate/browse/BVAL -208 @Valid devrait supporter l'attribut groups Jetez un oeil. Je vous remercie! –

+0

@Arthur Bonjour Arthur. Terminé. Et merci! –

+0

Merci pour votre réponse ........ – Mouli

Questions connexes