Java insert语句在hibernate中不起作用
我正在使用netbeans 6.9和Hibernate,并试图在数据库postgres中插入一些值,但出现以下异常: 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 听力是我的主要课程Java insert语句在hibernate中不起作用,java,hibernate,orm,Java,Hibernate,Orm,我正在使用netbeans 6.9和Hibernate,并试图在数据库postgres中插入一些值,但出现以下异常: 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.Sessio
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();
}
}
我不明白问题出在哪里。实体SELECTPACK.beanClass未被识别为有效实体,在创建SessionFactory时,日志中应该有以前的stacktrace,显示实际错误。查找以前的跟踪。但可能的原因包括:
这个表不存在
其中一个映射列不存在
除此之外,我还有几点不成问题的小意见:
传统上,软件包采用小写形式,即selectpack;
Java类名应以大写字母开头,即BeanClass;
建议在selectpack/BeanClass.hbm.xml映射文件中映射一个类selectpack.BeanClass,以便于维护;
我的建议是在映射文件中使用本机生成器。
课堂上有类似的内容:
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;
}
}
对于映射文件:
<?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>
但正如我所说,这些评论与问题没有直接关系。您没有显示hibernate.cfg.xml文件。我假设您没有指向该文件中的实体。感谢您的回复…给我一些使用hibernate的示例…好的+1 Hi Pascal,如果可能,请为这个问题投票@Valid应支持组属性看一看。非常感谢。
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();
}
}
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;
}
}
<?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>
<mapping resource="selectpack/BeanClass.hbm.xml"/>