如何查看hql 转换后的sql

如何查看hql 转换后的sql,第1张

1、如果是Query query = sessioncreateQuery("")的话,试一下去掉前面的“select ”即createQuery方法内的条件直接是“from ”,有几个是可以用的,因为支持部分SQL。

不行的话就用下面的格式(排序必用):

select OBJECT(o) from A o where ob in(21,32)

select OBJECT(o) from A o order by ob ASC

2、Hibernate中实现模糊查询,可有以下三种方式:

第一种方式:QBC查询

String name = "", info = "";

if (sub != null && subgetSubname() != null) {

name = subgetSubname();

}

if (sub != null && subgetSubinfo() != null) {

info = subgetSubinfo();

}

Criteria cr = sessioncreateCriteria(Subjectclass);

cradd(Expressionlike("subname","%"+name+"%"));

cradd(Expressionlike("subinfo","%"+info+"%"));

第二种方式:HQL查询语句

String hql = "from Subject as s where ssubname like :name and ssubinfo like :info";

// 调用session的获得数据列表方法,传递HQL查询语句

Query query = sessioncreateQuery(hql);

querysetString("name","%"+name+"%");

querysetString("info","%"+info+"%");

Systemoutprintln(""+hql);

第三种方式:HQL查询语句(查询条件只能为英文或数字,汉字在传递到hibernate内部时出现乱码问题)

String hql = "from Subject as s where ssubname like '%"+name+"%' and ssubinfo like '%"+info+"%'";//调用session的获得数据列表方法,传递HQL查询语句

Query query = sessioncreateQuery(hql);

注:Subject为数据库表subject映射的类;它有相应的属性subname、subinfo及相应的get和set方法;sub为Subject的一个实例化对象。

你可以看一下 struts的 token是如何实现防止重复提交的

---------------------------

Struts的Token(令牌)机制能够很好的解决表单重复提交的问题,基本原理是:服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求后,且在答复发送给客户端之前,将会产生一个新的令牌,该令牌除传给客户端以外,也会将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了重复提交的发生。

这时其实也就是两点,第一:你需要在请求中有这个令牌值,请求中的令牌值如何保存,其实就和我们平时在页面中保存一些信息是一样的,通过隐藏字段来保存,保存的形式如: 〈input type="hidden" name="orgapachestrutstaglibhtmlTOKEN" value="6aa35341f25184fd996c4c918255c3ae"〉,这个value是TokenProcessor类中的generateToken()获得的,是根据当前用户的session id和当前时间的long值来计算的。第二:在客户端提交后,我们要根据判断在请求中包含的值是否和服务器的令牌一致,因为服务器每次提交都会生成新的Token,所以,如果是重复提交,客户端的Token值和服务器端的Token值就会不一致。下面就以在数据库中插入一条数据来说明如何防止重复提交。

在Action中的add方法中,我们需要将Token值明确的要求保存在页面中,只需增加一条语句:saveToken(request);,如下所示:

public ActionForward add(ActionMapping mapping, ActionForm form,

>

系统框架使用的springmvc 。。。。

在controller层上做了拦截器,添加了自定义标签,使用了该标签则需要校验session是否过期,过期则跳转至登录页面,但是系统用到了shiro,请问在java代码中如何判断seesion已经过期

Subject currentUser = SecurityUtilsgetSubject();

Session session = currentUsergetSession();

//过期,则跳转登录页面重新登录

if () { //就是这里不知道如何写!!!!!!!!!!!!!!!!!!!!!

dosomething;。。。。

shiro配置如下:

<!-- 会话DAO -->

<bean id="sessionDAO" class="orgapacheshirosessionmgteisEnterpriseCacheSessionDAO">

<property name="activeSessionsCacheName" value="shiro-activeSessionCache"/>

<property name="sessionIdGenerator" ref="sessionIdGenerator"/>

</bean>

<!-- 会话验证调度器 -->

<bean id="sessionValidationScheduler" class="orgapacheshirosessionmgtquartzQuartzSessionValidationScheduler">

<property name="sessionValidationInterval" value="1800000"/>

<property name="sessionManager" ref="sessionManager"/>

</bean>

<!-- 会话管理器 -->

<bean id="sessionManager" class="orgapacheshirowebsessionmgtDefaultWebSessionManager">

<property name="globalSessionTimeout" value="1800000"/><!-- 回话有效时间30分钟 -->

<property name="deleteInvalidSessions" value="true"/>

<property name="sessionValidationSchedulerEnabled" value="true"/>

<property name="sessionValidationScheduler" ref="sessionValidationScheduler"/>

<property name="sessionDAO" ref="sessionDAO"/>

<property name="sessionIdCookieEnabled" value="true"/>

<property name="sessionIdCookie" ref="sessionIdCookie"/>

</bean>

希望能帮到楼主, 谢谢

AuthenticationInfo authcInfo = new SimpleAuthenticationInfo(shopgetLoginName(), shopgetPassword(), "昵称或真实姓名");

Subject currentUser = SecurityUtilsgetSubject();

Session session = currentUsergetSession();

sessionsetAttribute();

仅供参考。

以上就是关于如何查看hql 转换后的sql全部的内容,包括:如何查看hql 转换后的sql、您已尝试提交多次了,请返回后刷新页面,方可重新发贴 点击返回、session如何在java代码中判断是否过期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9559869.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存