Hibernate中一对一实体关系的主键关联问题

小弟在利用Hibernate进行一对一关系操作时,利用的主键关联.遇到了下面的问题,现将问题描述如下:
在MySQL的quickstart数据库中有两个表,t_student和t_card。
t_student的构建语句如下:

create table t_student(id int primary key,name varchar(20),card_id varchar(20),sex varchar(20),
age int));

t_card的结构如下:
create table t_card(id int primary key,name varchar(20));
通过Hibernate的一对一实体关系的主键关联来操作实体Student和Card
Student.java的代码如下:
package register;
import register.Card;
public class Student{
private int id;
private String name;
private String card_id;
private String sex;
private int age;
private Card card;
public Student(){
}
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public String getCard_id(){
return card_id;
}
public void setCard_id(String card_id){
this.card_id=card_id;
}
public String getSex(){
return sex;
}
public void setSex(String sex){
this.sex=sex;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
public Card getCard(){
return card;
}
public void setCard(Card card){
this.card=card;
}
}
Card.java的代码如下:
package register;
import register.Student;
public class Card{
private int id;
private String name;
private Student stu;
public Card(){
}
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public Student getStudent(){
return stu;
}
public void setStudent(Student stu){
this.stu=stu;
}
}

Hibernate的配置文件如下:
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.datasource">java:comp/env/jdbc/quickstart</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">false</property>
<!-- Mapping files -->
<mapping resource="register.hbm.xml"/>
<mapping resource="Student.hbm.xml"/>
<mapping resource="Card.hbm.xml"/>
</session-factory>
</hibernate-configuration>

Student.hbm.xml如下:

<?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="register.Student" table="t_student">
<id name="id" column="id" type="int">
<generator class="increment"/>
</id>
<property name="name" column="name" type="string"/>
<property name="card_id" column="card_id" type="string"/>
<property name="sex" column="sex" type="string"/>
<property name="age" column="age" type="int"/>
<one-to-one name="card" class="register.Card" cascade="all"/>
</class>
</hibernate-mapping>

Card.hbm.xml如下:
<?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="register.Card" table="t_card">
<id name="id" column="id" type="int">
<generator class="foreign">
<param name="property">stu</param>
</generator>
</id>
<property name="name" column="name" type="string"/>
<one-to-one name="stu" class="register.Student" constrained="true"/>
</class>
</hibernate-mapping>
测试的JSP页面如下:
OneToOneRelation.jsp
<%@ page language="java" pageEncoding="GB2312" %>
<%@ page import="org.hibernate.Transaction"%>
<%@ page import="org.hibernate.Session"%>
<%@ page import="org.hibernate.cfg.*"%>
<%@ page import="org.hibernate.Query"%>
<%@ page import="org.hibernate.HibernateException"%>
<%@ page import="register.*"%>
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head><title></title></head>
<body bgcolor="#FFFFFF">
<%
Student stu=new Student();
stu.setName("Bill");
stu.setCard_id("2004001");
stu.setSex("male");
stu.setAge(22);

Card card=new Card();
card.setName("Bill");

stu.setCard(card);
card.setStudent(stu);

try{
Session ses=HibernateUtil.currentSession();
Transaction ts=ses.beginTransaction();
ses.save(stu);
ts.commit();
HibernateUtil.closeSession();
}
catch(Exception excep){
excep.printStackTrace();
out.println("wrong");
//throw excep;
}
%>
</body>
</html>

Tomcat的报错是:
Java.lang.NoClassDefFoundError

我的Tomcat,MySQL和Hibernate的配置都没问题,能正常运行。
出现此问题,小弟自己猜测是否是Student.hbm.xml和Card.hbm.xml的问题,或者是Student.java和Card.java问题。我的Hibernate版本是3.1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值