【问题标题】:Hibernate Formula not setting value休眠公式未设置值
【发布时间】:2020-11-04 15:53:22
【问题描述】:

我有这个实体

@Entity
public class OrderEntity {
   /**
   * Unique id of this order.
   */
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private int id;

   @Formula(value="(select e.release from environment e where e.name = source_Environment)")
   private String release;

   @Column
   private String sourceEnvironment;
   
}

和

@Entity
public final class Environment {
@Id
@Column(name = "NAME", nullable = false, length = 4)
private String name;
@Column(name = "RELEASE", nullable = false, length = 4)
private String release;

Hibernate 产生这个查询:

SELECT orderentity0_.id              AS id1_5_,
    orderentity0_.source_environment AS source_21_5_,
    (SELECT e.release
        FROM environment e
        WHERE e.name = orderentity0_.source_Environment ) AS formula1_
FROM OrderEntity orderentity0_

当我对我的 (db2) 数据库手动执行查询时,我得到了预期的结果。但是当我在 hibernate (OrderEntity) 创建的对象上调用 orderEntity.getRelease() 时,它返回null。

【问题讨论】:

    标签: java hibernate db2 formula


    【解决方案1】:

    回答我自己的问题: 我错过了公式中的架构,因此将其设置为:

       @Formula(value="(select e.release from myschema.environment e where e.name = 
                        source_Environment)")
       private String release;
    

    解决了我的问题。

    【讨论】:

      猜你喜欢
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 2016-08-25
      • 1970-01-01
      相关资源
      最近更新 更多