hibernate简单查询问题

shuaisweet 2007-10-27 11:08:35
有谁知道Hibernate中写什么方法可以根据字符串进行查询
例如:
public static Student selectStudent(int id)
{
session=sessionFactory.openSession();
Student student=null;
try {
tx=session.beginTransaction();
student=(Student) session.get(Student.class, id);
tx.commit();
} catch (HibernateException e)
{
// TODO Auto-generated catch block
tx.rollback();
}
return student;
}
以上例子是根据ID进行查询的可是我把参数换成字符串就会出异常?请教高手!!!
还有怎么样才才能把一个表里的全部数据查询出来?
小弟是新手 请多多指点?
...全文
277 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyqiang 2008-05-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jinggangshi 的回复:]
Java codepublic static Student selectStudent(String name)
{
session=sessionFactory.openSession();
Student student=null;
try {
tx=session.beginTransaction();
Criteria cri = session.createCriteria(Student.class);
cri.add(Expression.eq("name", name));
List list = cri.list();
if (list!=null){
student=(Student)list.get(0);//如果查询的结果唯一
}else{
student=null;
}
} catch (HibernateExc…
[/Quote]
fangyao8389 2008-05-22
  • 打赏
  • 举报
回复
up
bet_fov 2008-05-17
  • 打赏
  • 举报
回复
根据字符串查询建议换成HQL或QBC查询
chenciitc 2008-05-09
  • 打赏
  • 举报
回复
发表于:2008-05-09 13:40:51 楼主

北京思源培训中心(http://www.ciitc.com)专业做软件开发技术的培训;由于课程培训需要,长年高薪诚聘兼职讲师,欢迎计算机及相关专业的高校老师、研究生、博士生应聘
基本要求如下:
l 本科以上学历,计算机或相关专业毕业。
2 具有实际相关工作经验,从事过软件开发或系统管理工作。
3 语言表达清楚、流畅、逻辑思维清晰,英语听说良好。
4 诲人不倦,有高度的责任感、敬业精神和团队意识。
5 注重仪表,具有随机应变的能力。
6 具有一定的教学经验,从事过教学/培训业务者优先考虑。

精通应聘职位的某一部分课程内容,如下述编程语言或系统的一种或几种:
1. 编程语言:C++, VC++,VB.NET,C#, PowerBuilder, Delphi, Java,
Matlab , C++Builder
2. 数据库系统:SQL Server2000, SQL Server2005, Oracle,DB2,MySql
3. 网站编程:Marcomedia, HTML, Altova XML Suite,ASP, JSP, J2EE, J2SE,
PHP,ASP.NET,VB.NET, ColdFusion,ajax
4. 操作系统:Unix, Linux,Linux环境下嵌入式开发技术,Sun Solaris,IBM AIX
5. 办公软件:OFFICE(EXCEL、WORD、POWERPOINT)
6. 多媒体制作:Authorware7.0 , Director MX 2004
7. 图形动画类:Photoshop, Illustrator, CorelDRAW, FreeHand,
Flash ActionScript高级编程,3DMAX,AutoCAD2007 ,Maya
具有下述任何一种或几种国际IT认证证书者优先考虑:
1. 微软认证证书MCP / MCSA / MCSE / MCDBA / MCSD
2. SUN Java认证证书
3. Oracle认证证书
4. Macromedia认证证书
5. Linux认证证书
6. CIW (Certified Internet Webmaster) Associate/Professional/Master认证证书

有意者请把简历发到如下地址:abc@ciitc.com QQ:174629429 MSN:bjcosun@hotmail.com
http://www.ciitc.com



问题点数:20 回复次数:0 显示所有回复显示星级回复显示楼主回复 修改 删除 举报 引用 回复
silence1214 2007-11-08
  • 打赏
  • 举报
回复
看好人家的问题啊,因为你数据库里面做的就是int型的 参数,所以你要是转换成String类型的参数,肯定出错了。
shuaisweet 2007-10-31
  • 打赏
  • 举报
回复
这样查询是不是模糊查询啊
我试过了,如果表里有如下两条记录:
1.aa aa
2.aaaa aaaa
那我如果想查aa,可是list里面总是把这两条全都查出来了!
不知金刚石高手有没有试过!
这个问题怎么解决很是郁闷!
jinggangshi 2007-10-31
  • 打赏
  • 举报
回复
以下是我用的测试类
测试的输出结果是唯一的:
1 111 mtoo.Grade@170888e

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
try {
Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
Criteria cri = session.createCriteria(SchoolClass.class);
cri.add(Expression.eq("name", "111"));
List list = cri.list();
for (int i = 0; i < list.size(); i++) {
SchoolClass sc = (SchoolClass) list.get(i);
System.out.println(sc.getId() + " " + sc.getName() + " "
+ sc.getGrade());
}
} catch (HibernateException he) {

}

}

}

package mtoo;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

private static Log log = LogFactory.getLog(HibernateUtil.class);

private static final SessionFactory sessionFactory;

static {
try {
// Create the SessionFactory
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
log.error("Initial SessionFactory creation failed.", ex);
throw new ExceptionInInitializerError(ex);
}
}

public static final ThreadLocal session = new ThreadLocal();

public static Session currentSession() throws HibernateException {
Session s = (Session) session.get();
// Open a new Session, if this Thread has none yet
if (s == null||!s.isOpen()) {
s = sessionFactory.openSession();
session.set(s);
}
return s;
}

public static void closeSession() throws HibernateException {
Session s = (Session) session.get();
session.set(null);
if (s != null)
s.close();
}
}



package mtoo;

/**
* 班级
*/
public class SchoolClass {
private Long id;
private String name; //班级:43班、52班
private Grade grade; //该班级所属年级

public SchoolClass() {}

public SchoolClass(Long id, String name, Grade grade) {
this.id = id;
this.name = name;
this.grade = grade;
}

/*********属性相应的set/get方法*************/
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Grade getGrade() {
return grade;
}

public void setGrade(Grade grade) {
this.grade = grade;
}
}


代码与给你提供的只是session的生成方式不同
jinggangshi 2007-10-31
  • 打赏
  • 举报
回复
eq是精确查询
模糊查询是
cri.add(Expression.like("name", "%name%"));
jinggangshi 2007-10-30
  • 打赏
  • 举报
回复
public static Student selectStudent(String name)
{
session=sessionFactory.openSession();
Student student=null;
try {
tx=session.beginTransaction();
Criteria cri = session.createCriteria(Student.class);
cri.add(Expression.eq("name", name));
List list = cri.list();
if (list!=null){
student=(Student)list.get(0);//如果查询的结果唯一
}else{
student=null;
}
} catch (HibernateException e)
{
student=null;
}
return student;
}


一点错误,呵呵
jinggangshi 2007-10-28
  • 打赏
  • 举报
回复
如果不唯一最好返回list
jinggangshi 2007-10-28
  • 打赏
  • 举报
回复
public static Student selectStudent(String name)
{
session=sessionFactory.openSession();
Student student=null;
try {
tx=session.beginTransaction();
Criteria cri = session.createCriteria(SchoolClass.class);
cri.add(Expression.eq("name", name));
List list = cri.list();
if (list!=null){
student=(Student)list.get(0);//如果查询的结果唯一
}else{
student=null;
}
} catch (HibernateException e)
{
student=null;
}
return student;
}

6,786

社区成员

发帖
与我相关
我的任务
社区描述
JBoss技术交流
社区管理员
  • JBoss技术交流社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧