浏览 1316 次
|
锁定老贴子 主题:有一个关于Hibernate配置的问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-07-02
我是使用Annontation mapping的,
有一个父类叫TeacherRefBase,定义如下: @MappedSuperclass
class TeacherRefBase implements Serializable {
..........
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public long getId() {
return id;
}
@ManyToOne(targetEntity=Teacher.class)
@JoinColumn(name="teacherId")
@NotNull
public Teacher getTeacher() {
return teacher;
}
}这里把TeacherRefBase join到 Teacher。
然后在来一个 @MappedSuperclass
class TeacherRef implements Serializable {
..........
public String getName() {
return name;
}
public int getAge() {
return age;
}
@OneToOne(targetEntity=Teacher.class)
@JoinColumn(name="teacherId")
@NotNull
public Teacher getTeacher() {
return teacher;
}
}
最后来个 @Entity
@Table(name="WorkHistory")
public class WorkHistory extends TeacherRef {
........
}
这个时候启动的时候就报错 Duplicate property mapping of teacher found in WorkHistory 请问这个问题 怎么解决? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2007-11-10
我发现Hibernate使用标注德时候,继承时不能重写某一个属性。现在我的解决方法是把父类的getTeacher声明未@Transtimt,然后在子类重新声明Hibernate标注。
|
|
| 返回顶楼 | |
|
时间:2007-11-11
还有一个问题就是MappedSuperclass标注的父类的属性在DWR中是取不到了,不知道有办法解决没有?
|
|
| 返回顶楼 | |
|
时间:2007-11-12
[quote="liangguanhui"]我发现Hibernate使用标注德时候,继承时不能重写某一个属性。现在我的解决方法是把父类的getTeacher声明未@Transtimt,然后在子类重新声明Hibernate标注。[/quote]
继承时如果使用Hibernate扩展可以重写某一个属性的,比如: @MappedSuperclass public abstract class Father{ //要在子类被重写的属性 @Column(name = "name") private String name; //set, get就省略了 } @Entity @Table(name = "tbl_sub") //重写开始 @AttributeOverride(name = "name", column = @Column(name = "sub_name")) public class Sub extend Father{ //子类的其它属性 } 在这里,子类继承了父类的name属性,但映射的表tbl_sub不是与之对应的"name"字段,是复写的"sub_name"字段. |
|
| 返回顶楼 | |






