我有 2 张桌子:
Table A
Id (primary key)
Name
request_Id
Table B
request_Id (primary key)
request_param
这两个表之间的关系是 request_id,虽然没有外键约束,这意味着即使表 B 中没有该 request_id 的记录,表 A 中也可以存在一条记录。我还要声明这是来自 A --> B 的单向关系
以下是 2 个表的注释映射:
@Entity...
class A
{
@Id
private int id;
@Column
private String Name;
@Column(name="request_id")
private String requestId
@ManyToOne(optional = true)
@JoinColumn(name="request_id", insertable=false, updatable=false)
private B b;
}
@Entity...
class B
{
@Id
@Column(name="request_id")
private String requestId;
@Column(name="param")
private String param;
}
考虑这个表数据:
table A
id = 1
name = "temp"
request_id = "A"
B中没有记录
当我为 A 中没有相应记录的 B 中的记录加载实体 A 时,出现异常“org.hibernate.ObjectNotFoundException:不存在具有给定标识符的行”
我打印了 sql,我看到了 2 个查询,一个用于表 A,一个用于表 B 的外部连接,然后另一个用于表 B 的查询。
我不确定它为什么会这样做。当我在 DB 中执行第一个查询时,它工作正常。谁能指出我做错了什么或提供一些解决问题的指示?