I am trying to get distinct values from table application based on the column entry_id. I've managed to get this working with plain SQL:
SELECT DISTINCT ON (a.entry_id) a.* FROM application AS a
JOIN entry AS e ON e.id = a.entry_id
WHERE e.valid_until BETWEEN ? AND ?;
The problem is, I have to translate it to HQL. Is there any way to resolve it in HQL without Criteria API?
It looks like this feature has been requested a long time ago but is still unresolved.
Related
i came into a situation where i want to select rows which meets within some date.
i am using oracle and my query looks like :-
Query
SELECT d.id,d.ADVERTISEMENTCODE,d.LASTDATEOFFORMSUBMISSION,e.LASTDATEFORFORMSUBMISSION,
d.studentMasterId FROM CANDIDATEAPPEARAGAINSTADVTCODE d LEFT OUTER JOIN ADVERTISEMENTCODE e
ON d.ADVERTISEMENTCODE = e.ADVERTISEMENTCODE WHERE paymentStatus='Pending'
and studentMasterId='8670' and
TO_DATE(e.LASTDATEFORFORMSUBMISSION,'dd/mm/yyyy')+4 > TO_DATE('11/05/2017','dd/mm/yyyy');
this is a running query and it returns exactly what i want.
but now i want to do it with hibernate query language. how can it be done?
I am new to JPA.
I am trying to create a nativequery with 3 joins on 3 tables.
I have written a nativequery which is something like the below:
Query query=entityManager.createNativeQuery("select p.value,m.value,t.value,t.value from ping as p,ming as m,ting as t where p.id=m.vid and m.id=t.vid");
List<Object[]> list = (List<Object[]>) query.getResultList();
I have 3 tables ping,ming,ting in my database.
I have got syntax error during execution.
check the manual that corresponds to your MySQL server version for the right syntax to use near 'ping as p,ming as m ,ting as t';
Would be helpful if some one can point me the error and What would be the better solution to join different tables over nativequery in JPA.
EDIT:I have successfully run the above query on mysql.
'ping as p,ming as m ,ting as t'
Try to put dot instead coma.
Maybe your syntax is incorrect
Some how alias on the column is causing the problem.
I have tried running the program with out alias on the columns and everything is fine.
Found the similar question here.
hibernate native SQL query error
I'm using PostgreSQL in my java application without ORM. I want to go further and add Hibernate to my project. I have this sql query which I add to PreparedStatement() and it returns a number.
SELECT COUNT(pr.id) FROM prisoner pr
JOIN cell c ON c.id = pr.cell_id
JOIN prison p ON p.id = c.prison_id
WHERE p.id = ?
I'm new to Hibernate. How would you suggest me to rewrite this statement to work with Hibernate? Should I use HSQL, or criteria or query or something different ?
You can do it Either of following way.
1) Keep you query as it and use nativeSQL for hibernate.
hibernate native query, count
2) make model of all your join table and put hibernate query.
How would represent the following Oracle SQL in Hibernate HQL.
select table_num
, room_id
, min(event_type) keep(dense_rank first order by changed_on desc)
from room_history
group by table_num, room_id;
The idea behind the query is to order the table "room_history" by "changed_on" datetime column and then group it by "table_num" and "room_id" pairs whilest keeping the first "event_type" for each group. The mentioned query works for Oracle but I have trouble converting it into HQL.
Purpose is to get the latest "event_type" for "table_num" and "room_id" pair.
It seems this is not achievable
I ended up converting the following SQL query instead. It is not perfect but it does the job for my purposes.
select table_num, event_type et from room_history where id in (select max(id) from privacy_history group by msisdn);
I was able to do this assumptions since when for this table always a.id > b.id then also a.changed_on> b.changed_on.
I am performing this via sql but i want to do this in hql, select statement in from ( select count(*)...) not works in hql, any sugestion and optimization would be appreciated
SELECT u.username,u.device_tocken,sr.count
from users u,
(select count(*) as count ,ssr.recepient as res from survey_recipient ssr where
(ssr.is_read is false and ssr.recepient in ('abc','xyz'))group by ssr.recepient ) sr
where
(u.username = sr.res and u.device_tocken is not null)
Hibernate does not support subselects in from clouse.
i tried many things and gave up when i found this jira issue.
see here https://hibernate.onjira.com/browse/HHH-3356
But if you have to use subselect you can create database views and use them in your sql as normal tables.