hibernate - 如何将 OneToOne 与 Hibernate Formula 结合使用

标签 hibernate

我想使用 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/

相关文章:

java - 如何使用 Java 在 SQL Server 中持久保存大型 JSON 字符串

java - 标准(不适用)

java - 通过子查询缩小查询结果

hibernate - 哪个在 hibernate native 查询或 HQL 中的性能更好

java - 由于实体脏度检查,SpringBoot/Hibernate 在只读事务下触发来自 find 存储库方法的更新查询

java - 如何处理负载并配置 tomcat 7 服务器和应用程序,使其能够处理超过 2000 个请求

java - 如何在 Hibernate 中引用另一个表

hibernate - session 与 session 工厂之间的区别 - Hibernate?

eclipse - 警告 : No mapping found for HTTP request with URI [/projectdemo/WEB-INF/jsp/results. jsp] 在 DispatcherServlet 中,名称为 'dispatcher'

java - 使用 for-each 遍历 createSQLQuery 的结果