【发布时间】:2018-12-07 20:09:41
【问题描述】:
我有一个具有 @Formula 属性的实体,如下所示:
@Entity
@Table(name = "areasAuxiliar")
public final class AreaAuxiliar implements Serializable {
@Id
@Column(name = "idArea")
private Integer idArea;
@Formula("RUTAAREA(idArea)")
private String ruta;
当我将休眠配置为指向 Oracle 数据库时,我没有问题, 但是,当我切换到 SQLServer 时,休眠不包括 shema 并且查询失败,
为休眠生成的查询如下所示:
select
areaauxili4_.idArea as idArea1_6_4_,
rutaArea(areaauxili4_.idArea) as formula2_4_
from
SIGAP.areasAuxiliar areaauxili4_
参数 hibernate.default_schema=SIGAP 正在被读取并包含在表中,但未包含在函数中,
是否有一个选项/注释可以在该函数中强制使用 shema?
我尝试过休眠 5.1 和 5.2,结果相同 :(
【问题讨论】:
-
你在这里指的是什么功能?
-
AFAIK,
@Formula.value的内容逐字传递给查询。为RUTAAREA创建一个全局别名(但不确定SQLServer 是否支持这种别名)或在RUTAAREA前面加上架构名称 -
@crizzis 我无法在代码中添加架构,因为它可以更改我无法为每种情况构建自定义部署,我不确定,但可以为表而不是函数创建别名: (
-
@crizzis 我为该函数添加了一个别名到 dbo 但它是相同的,查询结束如下: select dbo.RUTAAREA(idarea) from sigap.areasAuxiliar;没有“dbo”就无法识别。
-
我想这就是你要找的东西:stackoverflow.com/questions/43635745/…
标签: java sql-server hibernate jpa hql