Hibernate Query examples (HQL)

Hibernate created a new language named Hibernate Query Language (HQL), the syntax is quite similar to database SQL language. The main difference between is HQL uses class name instead of table name, and property names instead of column name.

HQL is extremely simple to learn and use, and the code is always self-explanatory.

1. HQL Select Query Example

Retrieve a stock data where stock code is “7277”.


Query query = session.createQuery("from Stock where stockCode = :code ");
query.setParameter("code", "7277");
List list = query.list();

Query query = session.createQuery("from Stock where stockCode = '7277' ");
List list = query.list();

2. HQL Update Query Example

Update a stock name to “DIALOG1” where stock code is “7277”.


Query query = session.createQuery("update Stock set stockName = :stockName" +
    				" where stockCode = :stockCode");
query.setParameter("stockName", "DIALOG1");
query.setParameter("stockCode", "7277");
int result = query.executeUpdate();

Query query = session.createQuery("update Stock set stockName = 'DIALOG2'" +
    				" where stockCode = '7277'");
int result = query.executeUpdate();

3. HQL Delete Query Example

Delete a stock where stock code is “7277”.


Query query = session.createQuery("delete Stock where stockCode = :stockCode");
query.setParameter("stockCode", "7277");
int result = query.executeUpdate();

Query query = session.createQuery("delete Stock where stockCode = '7277'");
int result = query.executeUpdate();

4. HQL Insert Query Example

In HQL, only the INSERT INTO … SELECT … is supported; there is no INSERT INTO … VALUES. HQL only support insert from another table. For example


"insert into Object (id, name) select oo.id, oo.name from OtherObject oo"; 

Insert a stock record from another backup_stock table. This can also called bulk-insert statement.


Query query = session.createQuery("insert into Stock(stock_code, stock_name)" +
    			"select stock_code, stock_name from backup_stock");
int result = query.executeUpdate();

The query.executeUpdate() will return how many number of record has been inserted, updated or deleted.

Reference

  1. Hibernate 3.3.2 query documentation

About the Author

author image
mkyong
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities.

Comments

avatar
44 Comment threads
28 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
56 Comment authors
GabrielenaveencoolbeansLuísTr?n Hi?p Recent comment authors
newest oldest most voted
Luís
Guest
Luís

The Select example produces this warning: “List is a raw type. References to generic type List should be parameterized”

Amit
Guest
Amit

Awesome ! Your articles are very easy to understand and explains the concept very well. I wonder if you have come through inheritance strategies and hibernate caching?

JuserNt
Guest
JuserNt

thanks … useful as initiation to HQL

Naveed
Guest
Naveed

very easy and useful to start hql. thnx

trackback
Hibernate Tutorials

[…] Hibernate Query examples (HQL) HQL CRUD examples , select, update , delete and batch insert (no single insert support). […]

Yonathan
Guest
Yonathan

hai, i’m trying to use HQL Update Query Example but get this error :

cannot find symbol
symbol:method setParameter(java.lang.String,java.lang.String)
location:class javax.management.Query

what is correct package i should import.
i’m using import javax.management.Query;

thank u for your answer

Deepak Lalchandani
Guest
Deepak Lalchandani

hi Mkyong, can u illustrate more examples on HQL and native SQL.

chary1112004
Guest
chary1112004

Dear! But i didn’t see hibernate.cfg.xml config to use hsql! Can you give it here?

salmon
Guest
salmon

Hi Yong,
I have a requirement, where i need to save 5000 records at a time. currently for saving 1000 records it is saving more than 1 minute. in such a case for saving 5000 records it may take around 5 minutes. i am adding the code what i have written. please suggest how can i reduce save time. i am using merge() for saving..if i dont use merge, if i use saveOrUpdate() or save() i am getting nonuniqueobject exception. please suggest me….

for (LoadGsCmpTape loadGsCmpTape : cmpTapeList) {
if(loadGsCmpTape.getCmpSetId()== null || loadGsCmpTape.getCmpSetId()== 0L){
loadGsCmpTape.setCmpSetId(currentSetId);
}
this.getHibernateTemplate().merge(loadGsCmpTape);

}

Thanks,
Salmon

chary1112004
Guest
chary1112004

I read reference about hibernate but still didn’t know how to map between field which reference to object with property in POJO. In Oracle, I have Event and Location. In type of Event has location_ref field which reference to object of Location. Matter is how config in hibernate-mapping and property in POJO to use hql or default function of hibernate. If you know, let say here. Thanks Mkyong! //Type Location CREATE TYPE Location_objtyp AS OBJECT ( id INTEGER, name VARCHAR2(255) ); //Table Location CREATE TABLE Location_objtab OF Location_objtyp ( id PRIMARY KEY ) OBJECT IDENTIFIER IS PRIMARY KEY; //Type Event… Read more »

devlab
Guest
devlab
fouding
Guest
fouding

Dear all,

I have a question: how to get the id of the new record(if the id is auto-incremented) when using createQuery(“insert into table values()”).executeUpdate()?

From your code:

Query query = session.createQuery("insert into Stock(stock_code, stock_name)" +
    			"select stock_code, stock_name from backup_stock");
int result = query.executeUpdate();

If the Stock table is sequence-generated, how to get the new reocrd’s id?

Thanks,
Fouding

Mohanakannan
Guest
Mohanakannan

HI
we are using the postgres polygon data type how can i insert the polygon(which is belongs to map latitude ,longitude)through hibernate

Ebay Wholesale
Guest
Ebay Wholesale

I wish to get across my affection for your generosity supporting individuals who really want help on this content. Your real commitment to passing the solution all through has been unbelievably functional and has in every case made associates much like me to arrive at their objectives. Your own useful guideline denotes a lot a person like me and additionally to my office workers. Thanks a lot; from everyone of us.

callshop software
Guest
callshop software

Purely to follow up on the up-date of this theme on your site and would want to let you know simply how much I liked the time you took to write this beneficial post. Inside the post, you actually spoke regarding how to definitely handle this issue with all comfort. It would be my personal pleasure to get some more ideas from your web-site and come as much as offer others what I have benefited from you. I appreciate your usual wonderful effort.

Portland Insulation
Guest
Portland Insulation

Awesome read. I just passed this onto a buddy who was doing some research on that. He just bought me lunch as I found it for him! So let me rephrase: Thanx for lunch!

minah
Guest
minah

thank you
easy to study HQL ..

Madristaa
Guest
Madristaa

SELECT * FROM TICKET A WHERE A.TICKET = 48615
AND A.ID = ( SELECT MAX(ID) FROM TICKET B WHERE B.TICKET = A.TICKET)

How to convert above query to hibernate?

Can you plz help for the same.

decaptchers
Guest
decaptchers

My brother suggested I would possibly like this website. He used to be totally right. This post truly made my day. You cann’t believe just how a lot time I had spent for this info! Thank you!

Arpit
Guest
Arpit

Hello,

I have problem in defining alias in HQL., it looks like using the “as” in the SELECT clause of a HQL query cause the “, expected in SELECT” exception, no matter you use a join or not.
plz help me.
Thanks in advance

Nagarjun
Guest
Nagarjun

Hi Mykong,
your blog is very impressive.
But you missed out to check the styles for About Us.

Chuck Fuhrman
Guest
Chuck Fuhrman

|I don’t generally interrupt amazing conversations like this with my own personal issues, but I really need the help of whoever in a position to lend me a hand. I’m conducting some research employing http://lawncaremaintenance.net/ and I was wondering if anyone here has employed them in the past. I am interested in both the positive and negative components of their business. Please get back to me as fast as possible for this is essential.Thank you.

Jacob
Guest
Jacob

Hi,
Could you in HQL query for displaying the all the tables in schema

Rahul
Guest
Rahul

hai i want to retreive 5th highest salary from the table through hibernate.how it is possible without native query?

Suraj Prakash
Guest
Suraj Prakash

Hi,

I have written this query

Mak
Guest
Mak

Hello YOng i want to fire one conditional Hibernate Query. That means if suppose the sum of something is equal to count(which will also come from Hibernate Query) then only the next query must gets fired.
Please help me in this.

Renganathan.P
Guest
Renganathan.P

Dear mkyong,
I want HQL or MySQL query for following criteria,
we have three textboxes in form. 1st one is zipcode. 2nd one is city. Last one is state .
when we are enter the zipcode, automatically appear the city and state in its textbox from datbases.

trackback
HQL Query Examples | F@tih Durmus's WebBlog
Pankaj Kumar Mishra
Guest
Pankaj Kumar Mishra

Dear Mkyong,
I am implementing hibernate in a APP where I get frequent request from DB.
This request is retrieved using on condition
ex. ISPICK=1 and When Data is taken into bean I issue merge() method to update the same record in DB by ID

Question is that whether its is good to use HQL and issue executeUpdate() or use merge() to just update single column?

Which one is fast in this case?

visit the site
Guest
visit the site

I’ve been surfing the web more than 3 hours today, and this is the best article I’ve come across. I’m a article fiend so I’ve actually seen a lot already.Personally I think, if all website owners and bloggers made as good content as youhave, the internet would bea lot more useful than ever before.