Java hibernate@Formula关于';转换(日期)和#x27;
我正在使用SQLServer2012,我的实体是Java hibernate@Formula关于';转换(日期)和#x27;,java,hibernate,Java,Hibernate,我正在使用SQLServer2012,我的实体是 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
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”的第一个参数添加了表的别名,因此此sql是错误的
我是否编写了错误的代码或使用了“@Formula”的一部分?不知道如何使hibernate不在不需要的地方插入表别名。但有一个解决办法。 您可以定义一个瞬态属性(类似于
convertedRq
)并在Java中转换值。在这种情况下,rq
将包含rq
字段的纯值,convertedRq
将动态计算
更新:解决方案已发布在此处:
(c) Sergio M c Figueiredo不知道如何使hibernate不在不需要的地方插入表别名。但有一个解决办法。 您可以定义一个瞬态属性(类似于
convertedRq
)并在Java中转换值。在这种情况下,rq
将包含rq
字段的纯值,convertedRq
将动态计算
更新:解决方案已发布在此处:
(c) 塞尔吉奥M c菲盖雷多
public class Oracle10gDialectExtended extends Oracle10gDialect {
public Oracle10gDialectExtended() {
super();
/* types for cast: */
registerKeyword("int");
// add more reserved words as you need
}
}