我正在使用休眠,并且我有两个表(旧的,它们不能重组),如下所示
表 A
@Entity
@Table(name = "tableA")
public Class TableA implements Serializable {
@EmbeddedId private TableAId tableAId;
@OneToOne(mappedBy = "tableA")
private TableB tableB;
// getters, setters, hashCode and equals ommited
}
表 A 的复合 ID
@Embeddable
public class TableAId implements Serializable {
protected int id1;
protected String id2;
protected int id3;
// getters, setters, hashCode and equals ommited
}
表 B
@Entity
public class TableB implements Serializable {
@OneToOne
@JoinColumn(name = "tableB", referencedColumnName = "id3")
protected TableA tableA;
// getters, setters, hashCode and equals ommited
}
从上面的代码可以看出,我需要表 B 使用表的复合键的一个或多个(不是全部)属性来连接表 A。我已经用这三种方法尝试过,但没有成功:
- 和上面的代码一模一样。
像这样更改 referencedColumnName 值
referencedColumName = "tableAId.id3"
在 TableA 的 pojo 实体中添加复合复合键的属性,如下所示:
// TableA @Column(name = "id1", insertable = false, updatable = false) private Integer id1;
如果这甚至是可能的??如果有任何帮助,将不胜感激!