读书人

关于hibernate的dao层的有关问题

发布时间: 2013-02-20 12:23:22 作者: rapoo

关于hibernate的dao层的问题
try{
tx = session.getTransaction();
tx.begin();

Query q = session.
createQuery("select p.id from Person p where p.username=:username and p.password=:password");

q.setString("username",person.getUsername());
q.setString("password", person.getPassword());

List record =q.list();

if (null !=record&&record.size() != 0) {

result = true;


}else{ result = false;}

tx.commit();

这是我dao层的接口 验证登陆的代码 好用
我想在通过验证username password的时候 如果成功 取得这行的id 并存入一个变量(能把id存入我dto(person)中的id吗 )
不知道怎么写了
求大神帮助 稍微具体点``菜鸟

hibernate dao list
[解决办法]
就是你还缺少action层的代码?
还是你需要的是把这个dao层内容给封装出来?
[解决办法]
id放在session里不就完事了。
[解决办法]
HttpServletRequest request = ServletActionContext.getRequest();
request.getSession().setAttribute("userId", userId);

我好奇 你的用户名 密码 不唯一?
怎么还要取list?
[解决办法]
id自增与否和这个没有关系,你放的是没一条记录的id,又不一样的。或者把id放在hidden里面
[解决办法]

引用:
try{
tx = session.getTransaction();
tx.begin();

Query q = session.
createQuery("select p.id from Person p where p.username=:username and p.password=:password");

q.set……


你这不是已经取出来了吗、
把hql 改改 from Person p where p.username=:username and p.password=:password
返回一个person不就可以了吗

Person person = null;
try{


Query q = session.
createQuery("select p.id from Person p where p.username=:username and p.password=:password");

q.setString("username",person.getUsername());
q.setString("password", person.getPassword());

List record =q.list();

if (null != record && !record.isEmpty() ) {

person = (Person)record.get(0);


}
}finally{
session.clear();
session.close();
}
return person;


你根据该方法返回的dto(person) 是否为null 就知道有没有该用户了、
而且 里面的数据全都查出来了 你想要什么就自己用什么咯



另外select查询 不需要事务的
不用begin 和commit。
[解决办法]

引用:
引用:try{
tx = session.getTransaction();
tx.begin();

Query q = session.
createQuery("select p.id from Person p where p.username=:username and p.password=:pas……


"select p.id from Person p where p.username=:username and p.password=:password"
改为:
from Person p where p.username=:username and p.password=:password

读书人网 >J2EE开发

热点推荐