[3rd][2011-1] foreign key must have same number of columns
最近一周在做一些查询的优化,看着一两年前写的东西就在抱怨 为什么原先不这么这么写......
好吧,谁让你一开始就没定下所谓的业务呢......
其实优化工作很简单,去除无用的表连接,不过因为整个查询是由criteria构建,所以你的VO关系决定了你的criteria path是不是最优的。
原来的逻辑是A -> AB -> B -> C
由于B是一张KW级别的表,加上C有B字段
所以就改成 A-> AB -> C,
在AB中建个关联 到 C
如下:
class A{ .......}class B{ ......}class AB{ private A a; private B b; private Set<C> c = new HashSet<C>(0); @OneToMany(fetch = FetchType.LAZY) @JoinColumn(name = "B_ID") public Set<C> getC(){ return c; }}class C{ private B b}
class AB{ private A a; private B b; private Set<C> c = new HashSet<C>(0); @OneToMany(fetch = FetchType.LAZY) @JoinColumn(name = "B_ID",referencedColumnName="B_ID") public Set<C> getC(){ return c; }}