hibernate单表继承映射问题
Animal类:public class Animal {
private int id;
private String name;
private String sex;
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
Bird类:
public class Bird extends Animal{
private int height;
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
}
Pig类
public class Pig extends Animal {
private int weight;
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
}
映射文件:
<?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="com.tom.hibernate.Animal" table="t_animal" discriminator-value="A">
<id name="id">
<generator class="native"/>
</id>
<discriminator column="animalType" type="char"></discriminator>
<property name="name"/>
<property name="sex"/>
<subclass name="com.tom.hibernate.Bird" discriminator-value="B">
<property name="height"></property>
</subclass>
<subclass name="com.tom.hibernate.Pig" discriminator-value="P">
<property name="weight"></property>
</subclass>
</class>
</hibernate-mapping>
测试代码:
public void testExtendsLoad01(){
//创建Hibernate Session
Session session=HibernateUtil.openSession();
try{
//开启事物
session.beginTransaction();
Animal a=(Animal)session.get(Animal.class, 2);
System.out.println(a.getName());
if(a instanceof Bird){
System.out.println("这是一只鸟!");
}
if(a instanceof Pig){
System.out.println("这是一头猪!");
}
//提交事务
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
//出现异常,回滚事务
session.getTransaction().rollback();
}finally{
//关闭事物
session.close();
}
}
头疼啊,为什么我在测试这段代码的时候总是报
java.lang.StringIndexOutOfBoundsException异常
求指导
--------------------编程问答-------------------- 没有初始化把 --------------------编程问答-------------------- 问题不明确! 异常信息不完整! --------------------编程问答--------------------
你说的初始化是向数据库中插入数据么,我已经插入了啊 --------------------编程问答--------------------
--------------------编程问答--------------------
Animal a=(Animal)session.get(Animal.class, 2);//应该是这个地方有问题吧,改成1试试,好久没用,我也忘了
不行啊,试过了的
补充:Java , Web 开发