浏览 3488 次
锁定老帖子 主题:有一个关于Hibernate配置的问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-07-02
有一个父类叫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 请问这个问题 怎么解决? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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"字段. |
|
返回顶楼 | |