Hibernate:使ManyToOne关系与无法匹配的密钥

时间:2015-07-13 12:59:50

标签: java hibernate

我在两个对象之间有多对一的关系:SomeProjectType和Work Orders。在SomeProjectType,我有:

@OneToMany(mappedBy = "project", fetch = FetchType.EAGER)
private Set<WorkOrder> workOrders;

SomeProjectType有一个“ProjectKey”作为它的@id。

WorkOrder我有:

@ManyToOne
@JoinColumn(name = "WorkOrderProjectKey")
private SomeProjectType project;

我遇到的问题是,有时在WorkOrder中,“WorkOrderProjectKey”有一个SomeProjectType中不存在的项目键(我不知道为什么,但它是设计的。)

我的问题是:有没有办法让Hibernate仍然返回行,即使有些不匹配?我尝试过“nullable = true”和“optional = true”,但它仍然不起作用。

2 个答案:

答案 0 :(得分:0)

尝试使用此代码,因为我遇到同样的问题,然后我会更改代码并正常工作。

主要密钥表

@OneToMany(mappedBy = "project")
private List<WorkOrder> workOrders;

外键表

@ManyToOne
@JoinColumn(name = "WorkOrderProjectKey")
private SomeProjectType project;

答案 1 :(得分:0)

我得到了它的工作!在@ManyToOne下,我将以下内容放在一起。

@NotFound( action = NotFoundAction.IGNORE )

从这里得到答案: Hibernate chokes on missing rows when dealing with a legacy database