首页 > 编程知识 正文

oracle中timestamp,timestamp

时间:2023-05-06 03:35:36 阅读:63317 作者:1354

有带有配置列和发布列的数据表。 这两个表都保留时间戳。 我的目标是使用CriteriaQuery在下面创建等效的SQL查询。

SQL查询: selecttimestampdiff(second,setup,released ) ) as sum_duration FROM

calls

entitymanager entitymanager=em provider.get (;

criteriabuildercriteriabuilder=entitymanager.getcriteriabuilder (;

criteriaqueryquery=criteria builder.create query (;

rootthingyroot=query.from (thingy.class );

路径设置=root.get (setup );

路径release=root.get (release );

expressionsecondliteral=criteria builder.literal (' second ' );

expression func=criteria builder.function (' timestamp diff ',Integer.class,secondLiteral,setup,release );

entity manager.create query (query ).getResultList );

但是,在尝试运行此代码时,发生了异常。 字符似乎显示为参数,而不是常量。

ava.lang.illegalstateexception 3360 nodatatypefornode : org.hibernate.hql.internal.ast.tree.method node

-[METHOD_CALL] MethodNode: ' (

- [ method _ name ] ident node : ' timestamp diff ' { original text=timestamp diff }

-[ expr _ list ] SQL node : ' expr list '

- [ named _ param ] parameter node : '? {name=param0,expectedType=null}

- [ dot ] dot node : ' CD r0 _.setup ' { property name=setup,dereferenceType=ALL,propertyPath=setup,path=genered

|-[ alias _ ref ] ident node : ' CD r0 _.id ' { alias=generated alias 0,className=com.vtsl.domain.CDR,table

|- [ ident ] ident node : ' setup ' { original text=setup }

-[ dot ] dot node : ' CD r0 _.release ' { property name=release,dereferenceType=ALL,propertyPath=release,pare

- [ alias _ ref ] ident node : ' CD r0 _.id ' { alias=generated alias 0,className=com.vtsl.domain.CDR,tablealias

-[ ident ] ident node : ' release ' { original text=release }

所以我匿名重写了LiteralExpression#render,试图直接返回我为这种方法提供的字符串,但这种异常。

ava.lang.illegalstateexception 3360 nodatatypefornode : org.hibernate.hql.internal.ast.tree.method node

-[METHOD_CALL] MethodNode: ' (

- [ method _ name ] ident node : ' timestamp diff ' { original text=timestamp diff }

-[ expr _ list ] SQL node : ' expr list '

- [ ident ] ident node : ' second ' { original text=second }

- [ dot ] dot node : ' CD r0 _.setup ' { property name=setup,dereferenceType=ALL,propertyPath=setup,path=genered

|-[ alias _ ref ] ident node : ' CD r0 _.id ' { alias=generated alias 0,className=com.vtsl.domain.CDR,table

|- [ ident ] ident node : ' setup ' { original text=setup }

-[ dot ] dot node : ' CD r0 _.release ' { property name=release,dereferenceType=ALL,propertyPath=release,pare

- [ alias _ ref ] ident node : ' CD r0 _.id ' { alias=generated alias 0,className=com.vtsl.domain.CDR,tablealias

-[ ident ] ident node : ' release ' { original text=release }

所以问题是,该如何解决我要执行的操作,或者实现第一个目标?

我在使用Hibernate。 我的数据库是MySQL。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。