The difference between CreateQuery and Createsqlquery is:-Alibaba Cloud

Original address: http://stta04.javaeye.com/blog/377633

Info: java.lang.ClassCastException: [Ljava.lang.Object; cannot is cast to Com.miracle.dm.doc.catalog.model.DocCatalogInfo

The original query statement:

String sql = "Select a.* from Tb_doc_catalog a where a.cat_code like '" +catcode+ "% '";
Session session = This.getsession ();
try {
List catnamelist = session.createsqlquery (SQL). List ();
return catnamelist;
} finally {
Releasesession (session); Release session
}

Analysis: Fields that were originally queried are not automatically converted to bean objects.

Solution one (using HQL query):

String sql = "Select a from Doccataloginfo a where a.catcode like '" +catcode+ "% '";
List catnamelist =gethibernatetemplate (). find (SQL);
return catnamelist;
OK, test to find no problem, it seems still because of the original SQL query reason, search online: Createsqlquery returned to the object, saw an article only to realize:

Solution two (using native SQL query):

String sql = "Select a.* from Tb_doc_catalog a where a.cat_code like '" +catcode+ "% '";
Session session = This.getsession ();
try {
List catnamelist = session.createsqlquery (sql). Addentity (Doccataloginfo.class). List ();
return catnamelist;
} finally {
Releasesession (session); Release session
}

It's OK again.

This article is also posted:

The difference between CreateQuery and Createsqlquery in Hibernate is:
The former uses the HQL statement to query, the latter can use the SQL statement query
The former takes the bean generated by hibernate as the object to load the list back
The latter is stored as an array of objects
So it's not very convenient to use createsqlquery and sometimes want to load the list back with hibernate-generated beans.
Suddenly discovered that Createsqlquery had a way to convert objects directly
Query query = session.createsqlquery (SQL). addentity (Xxxxxxx.class);
XXXXXXX represents the object of the bean generated by hibernate, which is the bean that the data table maps out.
Hehe after more attention, or from time to time to see the use of various methods hibernate object.

There is another minor detail that should be noted:
For example, there is such a PO
PO:User.class
Properties:userid,username
Ddl:create table Tuser (userid varchar), username varchar (20));
When executing:
Session.createquery ("From User U"). The SQL generated when list ():
Select Userid,username from Tuser;
When executing:

SQL generated by Session.createquery ("from User U"). Iterator ():
Select UserID from Tuser;
You can see that list () reads data from the database at once and fills it directly into the list
Iterator () reads the primary key of the data from the database and adds execution when the iterator is looped:
Select Userid,username from user where userid=?; read out the data.
Use different methods in different application areas, specifically in hibernate applications should pay attention to

The difference between CreateQuery and Createsqlquery is:

Related Article:

The SSl,tls,https of Python Web Learning notes

 "Go" talk about HTTPS and SSL/TLS protocols

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值