【发布时间】:2016-04-05 09:48:42
【问题描述】:
我有 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
【问题讨论】:
标签: java hibernate joincolumn or-condition