我想使用设置OneToOne实体Formula。
OneToOne
Formula
我尝试了以下操作,但结果始终是null(我想是因为该列KEY_MEDIA_CONTENT始终是null):
null
KEY_MEDIA_CONTENT
@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?
@Formula被忽略,因为它仅可替代@Column。而且那个不用于关系映射。
@Formula
@Column
但是您可以@Where改为使用它,它存在于集合中:
@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对象,可以使用特定的吸气剂:
keyMediaAsset
public MediaAssetOrder getKeyMediaAsset() { return keyMediaAsset.isEmpty() ? null : keyMediaAsset.iterator().next(); }