hibernate查询数据库时采用sql查询得出的结果没有对象名称,该怎么解决呢?

hibernate查询数据库时采用sql查询得出的结果没有对象名称,该怎么解决呢?,第1张

1、查看自己写的语句,没有丝毫的错误。放到SQL查询分析器执行。也能检索出数据。

这确保了这条语句是没错的。

提示:Hibernate中的SQL语句是不区分大小写的,即便是你查询的表名。比如你写成这

样也是合法的

"SEleCt

*

fRoM

ClaSSes

"。那么Hibernate怎样 *** 作对象?问题的关键

是这里sQuery.addEntity(Classes.class)这条语句,

你要正确填写你要检索的表的

实体,它必须是你存在的POJO。

2、使用Hibernate官方推荐的HQL查询,同样的数据库,同样的表。结果是正确的。这

确保了数据库链接是绝对没有问题的。

3、仔细检查我写的SQL查询方法,没有发现什么语法错误。

4、检查我查询表的POJO对象的映射文件.XXX.hbm.xml

,主键生成方式是

native

。似

乎也没有错误。

5、检查数据库检索表的主键,也已经设成自动增长。

<!-- DataSource -->

以MySQL数据库为例: <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">

<property name="driverClass" value="com.mysql.jdbc.Driver" />

<property name="jdbcUrl" value="jdbc:mysql://远程数据库的地址:端口号/数据库名" />

<property name="user" value="远程数据库的用户名" />

<property name="password" value="远程数据库的密码" />

<property name="maxPoolSize" value="100" />

<property name="minPoolSize" value="10" />

<property name="initialPoolSize" value="1" />

<property name="maxIdleTime" value="60" /><!--单位秒-->

</bean>说白了,就是取得远程数据库的地址、端口号、用户名、密码就可以了。与连接本机区别不大。

Hibernate查询所有数据的 *** 作方式有三种。

1、Query

(1)使用该方法查询时,不需要编写sql语句,但是需要编写hql(Hibernate Query Language)语句,该语句是Hibernate查询语言。

(2)hql语言 *** 作的是实体类和实体类的属性,比如查询所有数据的hql语句为:from 实体类名称。

(3)使用方法:首先创建Query对象,然后调用该对象的List方法返回数据集合。

@Test

public void test11(){

SessionFactory sessionFactory = null

Session session = null

Transaction tx = null

try {

sessionFactory = HibernateUtils.getFactory()

session = sessionFactory.getCurrentSession()

tx = session.beginTransaction()

/**

* 使用session对象的createQuery方法创建Query对象。

* 参数为hql语句

* 使用QUERY对象的list方法获取数据集合

*/

Query query =session.createQuery("from UserEntity")

List<UserEntity>list = query.list()

//使用forEach遍历集合

for (UserEntity userEntity : list) {

System.out.println(userEntity)

}

tx.commit()

} catch (Exception e) {

tx.rollback()

}finally{

sessionFactory.close()

}

}

2、criteria

(1)使用该对象不需要写hql语句,只需要指定实体类。

(2)使用方法:首先创建criteria对象,然后调用list返回数据集合。

@Test

public void test12(){

SessionFactory sessionFactory = null

Session session = null

Transaction tx = null

try {

sessionFactory = HibernateUtils.getFactory()

session = sessionFactory.getCurrentSession()

tx = session.beginTransaction()

/**

* 使用session对象的createCriteria方法创建criteria对象。

* 使用criteria对象的list方法获取数据集合

*/

Criteria criteria =session.createCriteria(UserEntity.class)

List<UserEntity>list = criteria.list()

//使用forEach遍历集合

for (UserEntity userEntity : list) {

System.out.println(userEntity)

}

tx.commit()

} catch (Exception e) {

tx.rollback()

}finally{

sessionFactory.close()

}

}

3、SQLQuery

(1)使用该对象,需要写底层的SQL语句。

(2)实现方法:首先创建该对象,然后调用list。

@Test

public void test13(){

SessionFactory sessionFactory = null

Session session = null

Transaction tx = null

try {

sessionFactory = HibernateUtils.getFactory()

session = sessionFactory.getCurrentSession()

tx = session.beginTransaction()

/**

* 使用session对象的createSQLQuery方法创建SQLQuery对象。

* 使用qQLQuery对象的list方法获取数据集合,集合里面不是对象,而是数组

*/

SQLQuery qQLQuery =session.createSQLQuery("select * from t_user")

List<Object[]>list = qQLQuery.list()

//使用forEach遍历集合

for (Object[] objects : list) {

System.out.println(Arrays.toString(objects))

}

tx.commit()

} catch (Exception e) {

tx.rollback()

}finally{

sessionFactory.close()

}

}

(3)数组转换成对象

@Test

public void test13(){

SessionFactory sessionFactory = null

Session session = null

Transaction tx = null

try {

sessionFactory = HibernateUtils.getFactory()

session = sessionFactory.getCurrentSession()

tx = session.beginTransaction()

/**

* 使用session对象的createSQLQuery方法创建SQLQuery对象。

* 使用qQLQuery对象的list方法获取数据集合,集合里面不是对象,而是数组

*/

SQLQuery qQLQuery =session.createSQLQuery("select * from t_user")

//将数组装载进实体中

qQLQuery.addEntity(UserEntity.class)

List<UserEntity >list = qQLQuery.list()

//使用forEach遍历集合

for (UserEntity userEntity : list) {

System.out.println(userEntity)

}

tx.commit()

} catch (Exception e) {

tx.rollback()

}finally{

sessionFactory.close()

}

}


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

原文地址: http://outofmemory.cn/sjk/10712000.html

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

发表评论

登录后才能评论

评论列表(0条)

保存