我正在使用
@Formula("cast(item_code as \"int\")")
将String
列投放到int
但hibernate
正在生成查询
and cast(this_.item_code as this_."int")=?
如何摆脱alias
前面的int
?
我试过了:
@Formula("cast(item_code as "int")")
和@Formula("cast(item_code as int)")
但仍然是同样的错误。如何将String
投射到int
?
提前致谢。
答案 0 :(得分:3)
我已经解决了与您类似的问题。我为我的数据库扩展了hibernate Dialect类。
public class Oracle10gDialectExtended extends Oracle10gDialect {
public Oracle10gDialectExtended() {
super();
/* types for cast: */
registerKeyword("int");
// add more reserved words as you need
}
}
设置' hibernate.dialect'这个新班级的财产。现在你的@Formula会工作。
答案 1 :(得分:0)
尝试:
@Formula("cast(item_code as NUMERIC(1,0))")
问题是您使用的方言无法将int
识别为类型(请参见 org.hibernate.dialect.isTypeNameRegistered())。
您可以根据您的方言使用确切的类型(例如PostgreSQL使用int4
,而DB2,Ingres和H2使用integer
...),也可以使用NUMERIC(1,0)
,因为一切括号后跟的是函数或关键字(请参见 org.hibernate.sql.Template.isFunctionOrKeyword())。