论坛首页 Java版 Hibernate

大家帮我看看这种关系怎么用Hibernate配置映射

浏览 457 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2007-10-15
关系
SingleSinger extends Singer
Band extends CompositeSinger entends Singer
CompositeSinger、Band和Singer又是一对多的关系 ,使用Table Per class hierarchy怎么写映射文件
代码:
package edu.jlu.fuliang.domain;

import java.util.HashSet;
import java.util.Set;
//歌手
public class Singer {
	private String region;
	private Long id;
	private Set<Song> songs = new HashSet<Song>();

	public String getRegion() {
		return region;
	}

	public void setRegion(String region) {
		this.region = region;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Set<Song> getSongs() {
		return songs;
	}

	public void setSongs(Set<Song> songs) {
		this.songs = songs;
	}
}

package edu.jlu.fuliang.domain;
//单人歌手
public class SingleSinger extends Singer {
	private String name;
	private char sex;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public char getSex() {
		return sex;
	}

	public void setSex(char sex) {
		this.sex = sex;
	}
}


package edu.jlu.fuliang.domain;

import java.util.HashSet;
import java.util.Set;
//组合歌手
public class CompositeSinger extends Singer {
	private Set<SingleSinger> singleSingers = new HashSet<SingleSinger>();

	public Set<SingleSinger> getSingleSingers() {
		return singleSingers;
	}

	public void setSingleSingers(Set<SingleSinger> singleSingers) {
		this.singleSingers = singleSingers;
	}
}

package edu.jlu.fuliang.domain;
//乐队
public class Band extends CompositeSinger {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}
   
最后更新时间:2007-10-15
我这么配置的,大家看看对不对,不知道什么原因在我这,连xml validator都没有通过,第17行就有个红叉,说没找到</class>,前面的标签开闭也没见到有错.本人纯新手级别的,呵呵.

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

<hibernate-mapping package="edu.jlu.fuliang.domain">

	<class name="Singer" abstract="true">
	  <id name="id" type="java.lang.Long">
	     <column name="SINGER_ID"/>
	     <generator class="identity"/>
	  </id>
	  
	  <discriminator column="TYPE" type="java.lang.String"/>
	  
	  <property name="region" type="java.lang.String"/>
	  	<column name="REGION"/>
	  </property>
	  
	  <set name="songs" table="SONG" inverse="true" cascade="save-update">
	     <key column="SINGER_ID"/>
	     <one-to-many class="Song"/> 
	  </set>
	  
	  <subclass name="SingleSinger" descriminator-value="1">
	     <property name="name" type="java.lang.String">
	  	    <column name="NAME"/>
	     </property>
	  </subclass>
	  
	  <subclass name="CompositeSinger" descriminator-value="2">
	     <set name="singleSingers" table="SINGER" cascade="save-update">
	     	<key column="COMPSITESINGER_ID"></key>
	     	<one-to-many class="SingleSinger"/>
	     </set>
	  </subclass>
	  
	  <subclass name="Band" descriminator-value="3" >
	      <set name="singleSingers" table="SINGER" cascade="save-update">
	     	<key column="BAND_ID"></key>
	     	<one-to-many class="SingleSinger"/>
	     </set>
	  </subclass>
	</class>
	
</hibernate-mapping>
   
0 请登录后投票
论坛首页 Java版 Hibernate

跳转论坛:
JavaEye推荐