我在对与另一个实体具有一对一关系的实体执行 jpql 查询时遇到意外行为。关键点是关系是从根实体的主键到目标实体的不是 ID 的字段。
这是示例:
// root entity
@Entity
@Table(name = "PERSON")
public class Person {
@Id
@Column(name = "PERSON_ID")
private long id;
private String name;
@OneToOne(optional = false)
@JoinColumn(name = "PERSON_ID", referencedColumnName = "PERSON_ID", insertable = false, updatable = false, unique = true)
private Address mainAddress;
...
}
// referenced entity
@Entity
@Table(name = "ADDRESS")
public class Address {
@Id
@Column(name = "ADDRESS_ID")
private long id;
@Column(name = "PERSON_ID")
private long personId;
...
}
Run Code Online (Sandbox Code Playgroud)
以下 jpql 查询:
select …Run Code Online (Sandbox Code Playgroud)