休眠公式不设置值
Hibernate Formula not setting value
我有这个实体
@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) 数据库手动执行查询时,我得到了预期的结果。但是当我在休眠(OrderEntity)创建的对象上调用 orderEntity.getRelease() 时,它 returns null
.
回答我自己的问题:
我缺少公式中的架构,因此将其设置为:
@Formula(value="(select e.release from myschema.environment e where e.name =
source_Environment)")
private String release;
解决了我的问题。
我有这个实体
@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) 数据库手动执行查询时,我得到了预期的结果。但是当我在休眠(OrderEntity)创建的对象上调用 orderEntity.getRelease() 时,它 returns null
.
回答我自己的问题: 我缺少公式中的架构,因此将其设置为:
@Formula(value="(select e.release from myschema.environment e where e.name =
source_Environment)")
private String release;
解决了我的问题。