我想使用 Formula
设置一个 OneToOne
实体。
我已尝试以下操作,但结果始终为 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
被忽略,因为它仅作为 @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
对象,您可以使用特定的 getter:
public MediaAssetOrder getKeyMediaAsset() {
return keyMediaAsset.isEmpty() ? null : keyMediaAsset.iterator().next();
}
关于hibernate - 如何将 OneToOne 与 Hibernate Formula 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32985643/