0
我正在写一个具有spring mvc和hibernate的web应用程序,并且我使用hibernate标准来进行搜索以给出结果集最大列值,但是我有一个问题,那就是我不知道怎么下面的SQL语句转换成休眠标准代码:休眠标准加入3个表后获得最大列值的记录
Criteria cr = session.createCriteria(MdApp.class, "mdapp");
cr.createAlias("mdapp.mdLists", "mdls", JoinType.LEFT_OUTER_JOIN);
cr.createAlias("mdapp.appEnqs", "ae", JoinType.LEFT_OUTER_JOIN);
cr.setProjection(Projections.distinct(Projections.projectionList()
.add(Projections.property("mdapp.displayId").as("displayId"))
.add(Projections.property("mdapp.type").as("type"))
.add(Projections.property("mdls.listId").as("listId"))
.add(Projections.property("mdapp.dbUser").as("dbUser"))
.add(Projections.property("mdapp.status").as("status"))
.add(Projections.property("mdapp.dtReceived").as("dtReceived"))
.add(Projections.property("mdapp.dtAck").as("dtAck"))
.add(Projections.property("mdapp.dtStatus").as("dtStatus"))
.add(Projections.property("mdapp.dtAppr").as("dtAppr"))
.add(Projections.property("mdls.dtIssue").as("dtIssue"))
.add(Projections.property("ae.dtEnquiry").as("dtEnq"))
.add(Projections.property("ae.dtReply").as("dtReply"))
.add(Projections.property("ae.id.sysAppId").as("sysAppId"))
.add(Projections.property("ae.id.type").as("AppEnqtype"))
.add(Projections.property("ae.id.seqNo").as("seq"))
));
给出了结果集这个样子,少列易于说明:
select * from
(select md.display_id as mddisid,
md.type as mdtype,
ml.list_id, md.vo,
md.status,
md.dt_received,
md.dt_ack,
md.dt_status,
md.dt_appr,ml.dt_issue,
ae.dt_enquiry,
ae.dt_reply,
ae.sys_app_id as sysappid,
ae.type,
ae.seq_no as sq
from md_app md
LEFT JOIN md_list ml
ON md.sys_app_id = ml.sys_app_id
LEFT JOIN app_enq ae
ON ml.sys_app_id = ae.sys_app_id
where md.app_id = "AN000008") a
inner join (
select md.display_id as mddisid,
max(ae.seq_no) as maxsq
from md_app md
LEFT JOIN md_list ml
ON md.sys_app_id = ml.sys_app_id
LEFT JOIN app_enq ae
ON ml.sys_app_id = ae.sys_app_id
where md.app_id = "AN000008" <-- an ID provided for searching
group by mddisid
) ss on a.mddisid = ss.mddisid and a.sq = ss.maxsq
我已经写了现在的标准
app_id seq_number AN01 1 AN01 2 AN03 1 AN03 2 AN03 3 AN04 1
,但我想实现:
app_id seq_number AN01 2 AN03 3 AN04 1
我曾尝试分离标准我在网上用Google搜索,但如果选择了一条记录似乎对形势。我使用groupProperty的的 APP_ID和最大的seq_number,只有seq_number = 1的记录,给出还尝试。
因为我坚持了几天。 任何帮助将不胜感激,在此先感谢。