我有一个实体,在同一张表上有两个外键,例如:
class A {
B _source;
B _target;
}
class B {
List<A> _as;
}
我的问题是如何按源和目标映射所有“ as”? 我正在使用休眠4
答案 0 :(得分:0)
您无法映射所有内容,但可以实现以下目的:
public class A {
@ManyToOne
B _source;
@ManyToOne
B _target;
}
public class B {
@OneToMany(mappedBy = "_source")
List<A> sources;
@OneToMany(mappedBy = "_target")
List<A> targets;
public List<A> getSources() {
return sources;
}
public List<A> getTargets() {
return targets;
}
public List<A> getAll() {
return Stream.concat(getSources().stream(), getTargets().stream()).collect(Collectors.toList());
}
}
使用getAll
方法。 (您可能还需要将distinct
应用于该流)