我在加载包含与另一个实体的可选一对一关系的实体时遇到问题。
当我尝试加载具有相应映射的实体时,一切似乎都很好,但有时(我猜是当我尝试加载CitationInformation
没有相应映射的 时VenueTopic
)我得到以下异常:
org.hibernate.PropertyAccessException: could not set a field value by reflection setter of
这些是我的课:
@Entity
public class CitationInformation {
@Id
@GeneratedValue
private long identifier;
private String doi;
@OneToOne(optional = true, targetEntity = VenueTopic.class)
@JoinColumn(name = "venue")
@NotFound(action=NotFoundAction.IGNORE)
private String venue;
...
}
@Entity
public class VenueTopic {
@Id
private String venueName;
private String topic;
...
}
不幸的是,我需要处理这种肮脏的情况,因为我必须将我的休眠实体与来自另一个表的数据集成,而这些数据不是通过休眠生成的。
我想我在这段关系中搞砸了@OneToOne
。我不确定我是否正确定义了它是可选的,以及我希望如何处理缺失值。
我想要的行为CitationInformation
应该始终包含一个venue
,但只有当有一个VenueTopic
具有相同的实体时,关系才应该存在venueName
。