我的模型中有几个实体,但有些属性共享一个属性,(define (shape=? shape1 shape2)
(or (and (triangle? shape1) (triangle? shape2))
(and (rectangle? shape1) (rectangle? shape2))))
我创建了一个这样的抽象类。
Student
这就像一个sharm,看看它们中的95%已经映射到MySQL表中的@javax.persistence.MappedSuperclass
public abstract class StudentImpl
{
private Student student;
@ManyToOne(fetch=FetchType.LAZY)@JoinColumn(name="c01")
public Student getStudent(){return student;}
@Override
public void setStudent(final Student student){this.student=student;return;}
}
列。
我使用这个抽象类扩展了我的每个模型,共享相同的属性。
C01
问题出现在某些类中,Student属性映射到其表中的不同列名
实施例
public class Teammate extends StudentImpl
正如您所看到的那样,它们与c01和c02不匹配,并且它们的列c01列被映射到一个简单的create table myTable
(
c02 int(11) NOT NULL, //student entity is mapped to c02 column instead of c01
)
而不是一个学生。
我试过
String
希望Hibernate能够理解学生属性被映射到此实体中的列c02。
@javax.persistence.AttributeOverride(name="student",column=@Column(name="c02"))
但似乎无法正常工作,因为它会抛出
@javax.persistence.AttributeOverride(name="student",column=@Column(name="c02"))
public class AnotherClass extends StudentImpl
{
private String c01;
private String getC01(){return this.c01;} //Column c01 is mapped to a String
}
当我尝试插入新的AnotherClass注册表时会出现此问题。
为什么我做错了是不可能完成它我要求的很多。
非常感谢委内瑞拉的最佳问候。
更新 解决了我已经找到解决方案感谢@ddalton我使用了这个,这是有效的
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Column 'C01' specified twice.
答案 0 :(得分:2)
您可以使用AssociationOverride注释来完成此任务: