有两张表:成绩表和课程表。课程表的主键CourseId是成绩表的外键。现在我要添加一个成绩,在jsp页面选择了课程后,但是post回来score对象中的CourseI为null。我想请教下是不是下面的两个映射文件我写的有问题?下面是score.hbm.xml:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
name="Score"
table="score"
>
false
name="Id"
type="integer"
column="ScoreId"
>
<property
name="UserId"
column="UserId"
type="integer"
not-null="true"
length="12"
/>
<property
name="Score"
column="Score"
type="java.lang.Double"
not-null="false"
length="22"
/>
<many-to-one
name="Course"
column="CourseId"
class="Course"
outer-join="false"
not-null="true"
lazy="false"
cascade="all"
>
</many-to-one>
</class>
和course.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
name="Course"
table="course"
>
false
name="Id"
type="integer"
column="CourseId"
>
<property
name="CourseName"
column="CourseName"
type="string"
not-null="true"
length="32"
/>
<!--
<set name="scores" lazy="false" casade="all" inverse="false">
<key column="ScoreId"/>
<one-to-many class="com.yangguo.pojo.Score"/>
</set>
-->
</class>
[b]问题补充:[/b]
感谢lovewyzlq和walsh得回答,通过两位的方法,我还是没有解决问题。walsh所说的要加包名是不必要的,因为这个pojo都是通过这个映射文件自动生成的,要是加了反而要报错。
在jsp页面选择了课程后,但是post回来score对象中的CourseId为null,
你怀疑是不是你的jsp代码写得有问题
[color=red] [/color]
[size=medium][color=red]楼主,成绩表的配置文件有个地方错了,课程表的配置文件是正确的。[/color][/size]
[quote]<many-to-one
name="Course"
column="CourseId"
class="Course"
outer-join="false"
not-null="true"
lazy="false"
cascade="all"
[/quote]
[size=medium]应该改为:[/size]
[code="java"]<many-to-one
name="Course"
column="CourseId"
class="com.yangguo.pojo.Course"
outer-join="false"
not-null="true"
lazy="false"
cascade="all"
[/code]
[size=medium][color=red]注意里面的class属性值,要加上包名。[/color][/size]
[size=medium]还有,我看到楼主配置文件中,成绩类和课程类的属性名,第一个字母怎么都是大写呢,这个可不符合Java命名属性名的规范呀,属性名的第一个字母应该小写,并且,这里配置的属性名一定要和类中的属性名称一致。[/size]