首先:我知道这里有很多类似的问题,但我已经阅读了大部分内容,并且所有人似乎都在解决略有不同的问题,没有人有一个满意的答案......所以我仍然希望有人知道如何处理我的问题...
简单地说,我有一个具有复合键的实体,我希望在此复合键的一部分上加入其他实体的集合。不幸的是,hibernate迫使我将复合键的其他部分包含到连接中,从而导致无用的大型连接表(对于250个不同的值集,> 20m行...)。因此,我想从连接中排除密钥的不必要部分。
实体草图:
public class A {
@Id
int i_am_A;
@OneToMany
@JoinColumn(referencedColumnName = "i_am_A",name="A_i_am_A")
Set<AB> abs;
}
public class B {
@Id
int i_am_B;
@Id
int myLanguage;
...
}
public class AB {
@ManyToOne
@Id
A myA;
@Id
int myB
@ManyToMany
@JoinColum(name="myB")
Collection<B> bs;
@Basic
String value
}
所以这基本上A
与B
有关系,可以有一定的值,存储在AB
中。一个异常现象是,B
存在多种语言,AB
应该指向所有语言。
有没有人知道如何使用Hibernate进行此操作(如果可能的话,不需要重新构建Db ...我知道可能有更好的设计,但现在这个模式中有很多行......)?
答案 0 :(得分:0)
根据@ SJuan76评论
更改数据库设计解决了这个问题