如何与Hibernate Formula一起使用OneToOne [英] How to use OneToOne with Hibernate Formula

查看:87
本文介绍了如何与Hibernate Formula一起使用OneToOne的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用公式设置 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();
}


I want to set an OneToOne entity using a Formula.

I have tried the following but the result is always null (I guess because the column KEY_MEDIA_CONTENT is always 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;

It seems like the Formula is ignored.

How can I reference an entity using some Formula?

解决方案

@Formula is ignored, because it is only valid as replacement for @Column. And that one is not used for relationships mappings.

But you can use @Where instead, which exists for collections:

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

To access your original keyMediaAsset object you can use a specific getter:

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

这篇关于如何与Hibernate Formula一起使用OneToOne的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆