我有两个java-classes / db-tables:'message'和'thirdparty'
@Entity
public class Message {
@OneToOne(mappedBy = "message")
private ThirdParty source = null;
@OneToOne(mappedBy = "message")
private ThirdParty target = null;
....
}
@Entity
public class ThirdParty {
@OneToOne(targetEntity = Message.class)
@JoinColumn(name = "Message", referencedColumnName = "mess_id", nullable = false)
private Message message = null;
@Column(name = "isSource", nullable = false)
private Boolean isSource = null;
}
Message有两个对ThirdParty的引用,可以通过isSource(如果它们是源或目标)来区分。
这是jpa以设计/注释的方式无法解决的。但有没有办法通过添加一些注释或某种特殊的sql语句来实现这一点?
答案 0 :(得分:0)
这在概念上是错误的。你不能做这个。当以下列方式映射两个实体时,会发生OneToOne映射:
实体1:具有主键(PK1)和其他键以及外键(FK)
实体2:有主键(PK2)
现在FK以这样的方式映射到PK2:对于每次出现的PK,必须有一个且只有一个匹配的FK出现。