我有 2 个 java 类Relation
和Person
,它们都存在于我的数据库中。
人:
@Entity
@Table(name = "persons")
public class Person {
@Id
@Column
private int id;
@Column
private String name;
@OneToMany(fetch = FetchType.EAGER)
@JoinColumns({
@JoinColumn(name = "slave_id", referencedColumnName="id"),
@JoinColumn(name = "master_id", referencedColumnName="id")
})
private List<Relation> relations;
//Getters and setters
}
关系:
@Entity
@Table(name = "relations")
public class Relation {
@Id
@Column
private int id;
@Column
private int child_id;
@Column
private int parent_id;
@Column
private String type;
//Getters and setters
}
每个 Person 都有一个关系列表(或没有),当关系的 child_id 或 parent_id 等于该人的 id 时,应将关系添加到列表中。
TL;DR:当relation.child_id OR relation.parent_id = person.id
=> 将关系添加到与人的关系列表中
我面临的问题是这个注释:
@JoinColumns({
@JoinColumn(name = "child_id", referencedColumnName="id"),
@JoinColumn(name = "parent_id", referencedColumnName="id")
})
创建以下 SQL(只是必要的部分):
relations relations6_
on this_.id=relations6_.slave_id
and this_.id=relations6_.master_id
Java Hibernate中生成SQL语句的正确注释是OR而不是AND