注解映射问题

有3张表,order_item,product_classification,service_classification;
order_item 中有cls_id,后面两张表两个主键都为cls_id,如果我想同时关联 order_item,下面的写的方法报错:

1.@ManyToOne(cascade = { CascadeType.REFRESH }, fetch = FetchType.LAZY)
@JoinColumn(name = "cls_id")
private ProductClassification productClassification;
@ManyToOne(cascade = { CascadeType.REFRESH }, fetch = F etchType.LAZY)
@JoinColumn(name = "cls_id")
private ServiceClassification serviceClassification;
报重复错误(clsId);
2..@ManyToOne(cascade = { CascadeType.REFRESH }, fetch = FetchType.LAZY)
@JoinColumn(name = "cls_id")
private ProductClassification productClassification;
private ServiceClassification serviceClassification;
报多出一个类;
哪位大侠,指教一下,怎么写,还有就是如果此方法行的通,在页面怎么显示,在order_item主表中,根据cls_id,怎么能有时显示${productClassification.name}有时显示${serviceClassification.name}.(同一列)。

那你那两个表得继承同一个父表,然后让OrderItem直接mapping到这个父类即可。
两个子类与父类的继承映射,你自己查下子类吧

看你的代码,order_item应该是many端,两个表都是1端。

另外的两个表有继承关系吗?

如果没有,order_item中的两个JoinColumn是不能相同的,因为它相当于外键,外键如果指定了一列肯定会出错。

另外,你的程序没太看懂,这么这么多JoinColumn和manyToOne

// @ManyToMany(cascade = { CascadeType.REFRESH }, fetch = FetchType.LAZY)
// @JoinColumn(name = "cls_id")
// private ProductClassification productClassification;
// @ManyToOne(cascade = { CascadeType.REFRESH }, fetch = FetchType.LAZY)
// @JoinColumn(name = "cls_id")

两个joincolume中的name别用同一个cls_id字段,改成不一样看看