【问题标题】:How to use OneToOne with Hibernate Formula如何将 OneToOne 与 Hibernate 公式一起使用
【发布时间】:2015-10-07 06:57:46
【问题描述】:

我想使用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 似乎被忽略了。

如何使用Formula 引用实体?

【问题讨论】:

    标签: hibernate


    【解决方案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 对象,您可以使用特定的 getter:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-18
      • 2011-10-23
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多