一尘不染

如何在休眠公式中使用OneToOne

hibernate

我想使用设置OneToOne实体Formula

我尝试了以下操作,但结果始终是null(我想是因为该列KEY_MEDIA_CONTENT始终是null):

@OneToOne
@JoinColumn(name="KEY_MEDIA_CONTENT")
@Formula(value = "SELECT MEDIAASSET_ORDER_ID AS KEY_MEDIA_CONTENT FROM PRODUCTION_MEDIAASSET_NEW WHERE KEY_TEXT=1 AND PRODUCTION_ORDER_ID=PRODUCTION_ORDER_ID")
private MediaAssetOrder keyMediaAsset;

似乎Formula忽略了。

如何使用某实体引用实体Formula


阅读 246

收藏
2020-06-20

共1个答案

一尘不染

@Formula被忽略,因为它仅可替代@Column。而且那个不用于关系映射。

但是您可以@Where改为使用它,它存在于集合中:

@OneToMany
@JoinTable(name = "PRODUCTION_MEDIAASSET_NEW", joinColumns = @JoinColumn(name = "PRODUCTION_ORDER_ID", referencedColumnName = "MEDIAASSET_ORDER_ID"))
@Where("KEY_TEXT = 1")
private Collection<MediaAssetOrder> keyMediaAsset;

要访问原始keyMediaAsset对象,可以使用特定的吸气剂:

public MediaAssetOrder getKeyMediaAsset() {
  return keyMediaAsset.isEmpty() ? null : keyMediaAsset.iterator().next();
}
2020-06-20