首页 / JAVA / Java-插入语句在休眠中不起作用
Java-插入语句在休眠中不起作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java-插入语句在休眠中不起作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4370字,纯文字阅读大概需要7分钟。
内容图文
我正在使用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
我的hbm.xml文件如下
<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>
我的cfg.xml文件如下
<?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>
我的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;
}
}
听到是我的主要班级
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时)应该有先前的堆栈跟踪,显示了真正的错误.寻找先前的痕迹.但是可能的原因包括:
>该表不存在
>映射的列之一不存在
除此之外,我还有几点要说的(不是问题):
>传统上,软件包是小写的(即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:
<mapping resource="selectpack/BeanClass.hbm.xml"/>
但正如我所说,这些言论与问题没有直接关系.
内容总结
以上是互联网集市为您收集整理的Java-插入语句在休眠中不起作用全部内容,希望文章能够帮你解决Java-插入语句在休眠中不起作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。