永发信息网

hibernate问题

答案:2  悬赏:50  手机版
解决时间 2021-05-02 04:59

<?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">

<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>

<session-factory>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306
</property>
<property name="connection.username">root</property>
<property name="connection.password">417000</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="myeclipse.connection.profile">jdbc</property>
<mapping resource="formBean/TbStudent.hbm.xml" />
<mapping resource="formBean/TbSubject.hbm.xml" />

</session-factory>

</hibernate-configuration>

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="formBean.TbStudent" table="tb_student" catalog="student">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="name" type="java.lang.String">
<column name="name" length="20" />
</property>
<property name="sex" type="java.lang.String">
<column name="sex" length="8" />
</property>
<property name="specialy" type="java.lang.String">
<column name="specialy" length="20" />
</property>
<set name="subject" table="tb_student_subject" lazy="false" >
<key column="student_id"/>
<many-to-many class="formBean.TbSubject" column="subject_id"/>
</set>
</class>
</hibernate-mapping>

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="formBean.TbSubject" table="tb_subject" catalog="student">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="name" type="java.lang.String">
<column name="name" length="20" />
</property>
</class>
</hibernate-mapping>

package formBean;

import java.util.List;

import org.hibernate.*;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
private static SessionFactory sessionfactory;
static{
try{
Configuration config=new Configuration().configure();
sessionfactory=config.buildSessionFactory();
}catch (Exception e) {
System.out.println("加载hibernate配置文件发生错误,内容如下:");
e.printStackTrace();
}
}
public List query(String hql){
Session session=sessionfactory.openSession();
Transaction tx=session.beginTransaction();
List l=null;
try{
Query q=session.createQuery(hql);
l=q.list();
tx.commit();
}catch (Exception e) {
tx.rollback();
System.out.println("发生错误,内容如下:");
e.printStackTrace();
}finally{
session.close();
}
return l;
}
}

<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<%@ page import="formBean.*" %>
<jsp:useBean id="h" class="formBean.HibernateUtil" scope="request"/>
<html>
<head>
<title>
index
</title>
</head>
<body topmargin="0">
<table width="52%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="12%"></td>
<td width="76%"></td>
<td width="12%"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0" background="image/bg.jpg">
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td><div align="center"><font size="6"><b>多对多的单向关联</b></font></div></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr align="center">
<td><table width="90%" border="1" cellspacing="0" cellpadding="2">
<tr align="center">
<td>姓名</td>
<td>性别</td>
<td>专业</td>
<td>选修科目</td>
</tr>
<%
List l=h.query("from TbStudent");
for(int i=0;i<l.size();i++){
TbStudent st=(TbStudent)l.get(i);
Set s=st.getSubject();
Iterator it=s.iterator();
String subjects="";
while(it.hasNext()){
TbSubject su=(TbSubject)it.next();
subjects=subjects+su.getName()+"&nbsp;&nbsp;&nbsp;&nbsp;";
}
%>
<tr align="center">
<td><%=st.getName() %></td>
<td><%=st.getSex() %></td>
<td><%=st.getSpecialy() %></td>
<td align="left"><%=subjects %></td>
</tr>
<%
}
%>
</table></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
</table></td>
<td>&nbsp;</td>
</tr>
</table>
</body>
</html>

运行时发生这个错误

发生错误,内容如下:
org.hibernate.exception.GenericJDBCException: could not initialize a collection: [formBean.TbStudent.subject#7]

各位大哥,怎么解决啊?

最佳答案

在您formBean.TbStudent的定义中有关于TbSubject的many-to-many mapping:


<set name="subject" table="tb_student_subject" lazy="false" >
<key column="student_id"/>
<many-to-many class="formBean.TbSubject" column="subject_id"/>
</set>


这里TbSubjet的primary key用的是subject_id Column。


然而在您formBean.TbSubject的定义中,primary key变成了id Column:


<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
建议您对照一下Database的实际情况,确认合适的Column Name。

全部回答
无法初始化 formBean 具体得看你程序
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
电脑系统的浏览器不见了
有比申智更美的韩国明星吗?
CF的问题。总是花屏。
怎样发现别人对你投来好感的目光?
摩尔庄园里做么么公主的生日礼物大概要多久?
兰怎么读拼音,兰字拼音怎么写?
哪里有卖精品巴黎铁塔的?? 知道的M
两个连续偶数的和是768,这两个偶数的最大公
社会发展的根本动力是什么
白色键盘应该怎么清洁?
反恐精英OL的进不到房间(急求)
关于本本的选择
横坑地址在什么地方,想过去办事
去年上海和香港GDP各是多少?
24寸液晶显示器用什么电视盒
推荐资讯
1990年农历5月15日出生的人工作,运程!
求(1.1)2+(1.2)2+(1.3)2+(1.4)2的值,答案选
求卫浴(生产、采购、跟单)文员方面具有针对性
数字媒体艺术专业在美术方面要求很高吗?美术
57级剑圣刷不过普通的机械牛是牛厉害还是人垃
流量费被无原因扣?
怎样写欣赏音乐后解释抽象艺术的语言和形象特
上红岩地址在哪,我要去那里办事
怎么才能只笑,不悲伤呢?
我的心有时很疼,有时和正常一样这是什么原因
建和自行车公司地址有知道的么?有点事想过去
脸上长痘痘怎么除去?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?