【问题标题】:hibernate @Formula about 'convert(date)'休眠@Formula 关于“转换(日期)”
【发布时间】:2016-01-07 05:17:03
【问题描述】:

我正在使用 SqlServer 2012,我的实体是

public class Something {

    private Date rq;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "rq")
    @Formula("CONVERT(DATE,rq)")
    public Date getRq() {
        return Rq;
    }

    public void setRq(Date rq) {
     this.Rq = rq;
    }
}

休眠调试日志:

Hibernate: 
select
    CONVERT(dnypowergr0_.DATE,
    dnypowergr0_.rq) as formula0_ 
from
    db.dbo.something dnypowergr0_

我想得到'rq'的结果,它可以真正'convert',但是正如日志所示,'convert'的第一个参数被添加了表的别名,所以这个sql是错误的。

我是否写错了代码或使用了“@Formula”的一部分?

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    不确定如何让休眠模式不在不需要的地方插入表别名。但是有一个解决方法。 您可以定义一个瞬态属性(类似于convertedRq)并在Java 中转换值。在这种情况下,rq 将包含 rq 字段的纯值,convertedRq 将即时计算。

    更新:解决方案已发布在这里Hibernate @formula is not supportinng Cast() as int for teradata database

    public class Oracle10gDialectExtended extends Oracle10gDialect {
    
        public Oracle10gDialectExtended() {
            super();
            /* types for cast: */
            registerKeyword("int");
            // add more reserved words as you need
        }
    } 
    

    (c) 塞尔吉奥·MC·菲格雷多

    【讨论】:

      猜你喜欢
      • 2011-04-08
      • 2011-12-11
      • 2014-05-04
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多