<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<base href="https://hibernate.atlassian.net">
<title>Message Title</title>
</head>
<body class="jira" style="color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 1.429">
<table id="background-table" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; background-color: #f5f5f5; border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0" bgcolor="#f5f5f5">
<!-- header here -->
<tbody>
<tr>
<td id="header-pattern-container" style="padding: 0; border-collapse: collapse; padding: 10px 20px">
<table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="header-avatar-image-container" valign="top" style="padding: 0; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px" width="32"> <img id="header-avatar-image" class="image_fix" src="cid:jira-generated-image-avatar-828b27e9-3a37-4cac-a225-e94a53566f99" height="32" width="32" border="0" style="border-radius: 3px; vertical-align: top"> </td>
<td id="header-text-container" valign="middle" style="padding: 0; border-collapse: collapse; vertical-align: middle; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> <a class="user-hover" rel="MatJohnson" id="email_MatJohnson" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=MatJohnson" style="color:#6c797f;; color: #3b73af; text-decoration: none">Mat Johnson</a> <strong>created</strong> an issue </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="email-content-container" style="padding: 0; border-collapse: collapse; padding: 0 20px">
<table id="email-content-table" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; border-spacing: 0; border-collapse: separate">
<tbody>
<tr>
<!-- there needs to be content in the cell for it to render in some clients -->
<td class="email-content-rounded-top mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 15px; background-color: #ffffff; border-left: 1px solid #cccccc; border-top: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom: 0; border-top-right-radius: 5px; border-top-left-radius: 5px; height: 10px; line-height: 10px; padding: 0 15px 0 16px; mso-line-height-rule: exactly" height="10" bgcolor="#ffffff"> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff">
<table class="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td class="page-title-pattern-first-line " style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; padding-top: 10px"> <a href="https://hibernate.atlassian.net/browse/HHH" style="color: #3b73af; text-decoration: none">Hibernate ORM</a> / <a href="https://hibernate.atlassian.net/browse/HHH-11160" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-11659b86-4f77-4a5f-80e7-c2c7368ef441" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom"></a> <a href="https://hibernate.atlassian.net/browse/HHH-11160" style="color: #3b73af; text-decoration: none">HHH-11160</a> </td>
</tr>
<tr>
<td style="vertical-align: top;; padding: 0; border-collapse: collapse; padding-right: 5px; font-size: 20px; line-height: 30px; mso-line-height-rule: exactly" class="page-title-pattern-header-container"> <span class="page-title-pattern-header" style="font-family: Arial, sans-serif; padding: 0; font-size: 20px; line-height: 30px; mso-text-raise: 2px; mso-line-height-rule: exactly; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HHH-11160" style="color: #3b73af; text-decoration: none">Parameter Items Wrong Order - SQL Server</a> </span> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand wrapper-special-margin" style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; padding-top: 10px; padding-bottom: 5px" bgcolor="#ffffff">
<table class="keyvalue-table" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Issue Type:</th>
<td class="has-icon" style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <img src="cid:jira-generated-image-avatar-11659b86-4f77-4a5f-80e7-c2c7368ef441" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom"> Bug </td>
</tr>
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Affects Versions:</th>
<td style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> 5.2.2 </td>
</tr>
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Assignee:</th>
<td style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> Unassigned </td>
</tr>
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Created:</th>
<td style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> 07/Oct/2016 07:29 AM </td>
</tr>
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Labels:</th>
<td style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> hibernate </td>
</tr>
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Priority:</th>
<td class="has-icon" style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <img src="cid:jira-generated-image-static-major-220d0dd9-e204-4cb0-823f-a14e9a152338" height="16" width="16" border="0" align="absmiddle" alt="Major" style="vertical-align: text-bottom"> Major </td>
</tr>
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Reporter:</th>
<td style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <a class="user-hover" rel="MatJohnson" id="email_MatJohnson" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=MatJohnson" style="color:#6c797f;; color: #3b73af; text-decoration: none">Mat Johnson</a> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand issue-description-container" style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; padding-top: 5px; padding-bottom: 10px" bgcolor="#ffffff">
<table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px">
<tbody>
<tr>
<td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0; border-collapse: collapse; padding: 0 0 10px"> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0; margin-top: 0">Relating to bug <span class="jira-issue-macro resolved" data-jira-key="HHH-10991">
<!-- replace the span with an AUI template --> <a href="https://hibernate.atlassian.net/browse/HHH-10991" class="jira-issue-macro-key issue-link" title="Wrong order parameter binding when filters are used in conjunction with component type parameters and subqueries" style="color: #3b73af; text-decoration: none"> <img class="icon" src="https://hibernate.atlassian.net/secure/viewavatar?size=xsmall&avatarId=12143&avatarType=issuetype"> HHH-10991 </a> <span class="aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf" style="background: #cccccc; border: 1px solid #cccccc; border-radius: 3px; color: #333333; display: inline-block; font-size: 11px; font-weight: bold; line-height: 99%; margin: 0; padding: 2px 5px; text-align: center; text-decoration: none; text-transform: uppercase; background-color: #ffffff; border-color: #cccccc; color: #333333" bgcolor="#ffffff">Closed</span> </span> . This solved an issue where the order was not correct. However, because it uses the limit function in the internal test case and also works fine on MySQL it does not work if you limit it on SQL Server as it puts the TOP() function on the query, and this throws out the parameters as it misses this.</p> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0">A simple test case is:</p>
<div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
<div class="codeContent panelContent" style="padding: 9px 12px">
<pre class="code-java" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">
<span class="code-keyword" style="color: #000091">package</span> org.hibernate.test.filter;
<span class="code-keyword" style="color: #000091">import</span> javax.persistence.*;
<span class="code-keyword" style="color: #000091">import</span> javax.persistence.Entity;
<span class="code-keyword" style="color: #000091">import</span> javax.persistence.Table;
<span class="code-keyword" style="color: #000091">import</span> java.io.Serializable;
<span class="code-keyword" style="color: #000091">import</span> java.util.Arrays;
<span class="code-keyword" style="color: #000091">import</span> java.util.List;
<span class="code-keyword" style="color: #000091">import</span> org.hibernate.Criteria;
<span class="code-keyword" style="color: #000091">import</span> org.hibernate.annotations.*;
<span class="code-keyword" style="color: #000091">import</span> org.hibernate.criterion.*;
<span class="code-keyword" style="color: #000091">import</span> org.junit.After;
<span class="code-keyword" style="color: #000091">import</span> org.junit.Test;
<span class="code-keyword" style="color: #000091">import</span> org.hibernate.testing.TestForIssue;
<span class="code-keyword" style="color: #000091">import</span> org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
<span class="code-keyword" style="color: #000091">import</span> <span class="code-keyword" style="color: #000091">static</span> org.hamcrest.core.Is.is;
<span class="code-keyword" style="color: #000091">import</span> <span class="code-keyword" style="color: #000091">static</span> org.junit.Assert.assertThat;
<span class="code-keyword" style="color: #000091">import</span> <span class="code-keyword" style="color: #000091">static</span> org.hibernate.testing.transaction.TransactionUtil.doInHibernate;
<span class="code-keyword" style="color: #000091">public</span> class CriteriaQueryWithAppliedFilterSQLServerTest {
<span class="code-keyword" style="color: #000091">private</span> <span class="code-keyword" style="color: #000091">final</span> <span class="code-keyword" style="color: #000091">static</span> CriteriaQueryWithAppliedFilterTest.Identifier STUDENT_ID = <span class="code-keyword" style="color: #000091">new</span> CriteriaQueryWithAppliedFilterTest.Identifier( 2, <span class="code-keyword" style="color: #000091">new</span> CriteriaQueryWithAppliedFilterTest.Identifier2( 4, 5L ) );
<span class="code-keyword" style="color: #000091">private</span> <span class="code-keyword" style="color: #000091">final</span> <span class="code-keyword" style="color: #000091">static</span> CriteriaQueryWithAppliedFilterTest.Identifier OU_ID = <span class="code-keyword" style="color: #000091">new</span> CriteriaQueryWithAppliedFilterTest.Identifier( 1, <span class="code-keyword" style="color: #000091">new</span> CriteriaQueryWithAppliedFilterTest.Identifier2( 4, 5L ) );
@Override
<span class="code-keyword" style="color: #000091">protected</span> <span class="code-object" style="color: #910091">Class</span><?>[] getAnnotatedClasses() {
<span class="code-keyword" style="color: #000091">return</span> <span class="code-keyword" style="color: #000091">new</span> <span class="code-object" style="color: #910091">Class</span>[] {CriteriaQueryWithAppliedFilterTest.Student.class, CriteriaQueryWithAppliedFilterTest.OrganisationUnit.class};
}
@Override
<span class="code-keyword" style="color: #000091">protected</span> void prepareTest() <span class="code-keyword" style="color: #000091">throws</span> Exception {
doInHibernate( <span class="code-keyword" style="color: #000091">this</span>::sessionFactory, session -> {
<span class="code-keyword" style="color: #000091">final</span> CriteriaQueryWithAppliedFilterTest.OrganisationUnit ou = <span class="code-keyword" style="color: #000091">new</span> CriteriaQueryWithAppliedFilterTest.OrganisationUnit(1);
session.save(ou);
<span class="code-keyword" style="color: #000091">final</span> CriteriaQueryWithAppliedFilterTest.Student student = <span class="code-keyword" style="color: #000091">new</span> CriteriaQueryWithAppliedFilterTest.Student();
student.setId( STUDENT_ID );
student.setTheId(1);
student.setOrganisationUnit(ou);
student.setName( <span class="code-quote" style="color: #009100">"dre"</span> );
student.setStatus( <span class="code-quote" style="color: #009100">"active"</span> );
student.setAge( 21 );
student.setAddress( <span class="code-keyword" style="color: #000091">new</span> CriteriaQueryWithAppliedFilterTest.Address( <span class="code-quote" style="color: #009100">"London"</span>, <span class="code-quote" style="color: #009100">"Lollard St"</span> ) );
session.save( student );
<span class="code-keyword" style="color: #000091">final</span> CriteriaQueryWithAppliedFilterTest.Student student2 = <span class="code-keyword" style="color: #000091">new</span> CriteriaQueryWithAppliedFilterTest.Student();
student2.setId( <span class="code-keyword" style="color: #000091">new</span> CriteriaQueryWithAppliedFilterTest.Identifier( 4, <span class="code-keyword" style="color: #000091">new</span> CriteriaQueryWithAppliedFilterTest.Identifier2( 4, 6L ) ) );
student2.setTheId(2);
student.setOrganisationUnit(ou);
student2.setName( <span class="code-quote" style="color: #009100">"Livia"</span> );
student2.setStatus( <span class="code-quote" style="color: #009100">"active"</span> );
student2.setAge( 27 );
student2.setAddress( <span class="code-keyword" style="color: #000091">new</span> CriteriaQueryWithAppliedFilterTest.Address( <span class="code-quote" style="color: #009100">"London"</span>, <span class="code-quote" style="color: #009100">"Oxford St"</span> ) );
session.save( student2 );
});
}
@After
<span class="code-keyword" style="color: #000091">public</span> void tearDown() {
doInHibernate( <span class="code-keyword" style="color: #000091">this</span>::sessionFactory, session -> {
session.createQuery( <span class="code-quote" style="color: #009100">"delete from Student"</span> ).executeUpdate();
} );
}
@Test
<span class="code-keyword" style="color: #000091">public</span> void testGenialCompletex() {
doInHibernate(<span class="code-keyword" style="color: #000091">this</span>::sessionFactory, session -> {
<span class="code-comment" style="color: #808080">//Enable the filter
</span> session.enableFilter( <span class="code-quote" style="color: #009100">"statusFilter"</span> ).setParameter( <span class="code-quote" style="color: #009100">"status"</span>, <span class="code-quote" style="color: #009100">"active"</span> );
<span class="code-object" style="color: #910091">int</span> page = 1;
<span class="code-object" style="color: #910091">int</span> pageSize = 10;
<span class="code-comment" style="color: #808080">//Inner Query
</span> <span class="code-keyword" style="color: #000091">final</span> DetachedCriteria theCriteria = DetachedCriteria.forClass(CriteriaQueryWithAppliedFilterTest.Student.class,<span class="code-quote" style="color: #009100">"s"</span>);
theCriteria.setProjection(Projections.distinct(Projections.property(<span class="code-quote" style="color: #009100">"s.theId"</span>)));
<span class="code-comment" style="color: #808080">//Outer Query
</span> <span class="code-keyword" style="color: #000091">final</span> Criteria <span class="code-keyword" style="color: #000091">outer</span> = session.createCriteria(CriteriaQueryWithAppliedFilterTest.Student.class, <span class="code-quote" style="color: #009100">"d"</span>);
session.enableFilter(CriteriaQueryWithAppliedFilterTest.Auditable.OU_FILTER);
org.hibernate.Filter ouFilter = session.enableFilter(CriteriaQueryWithAppliedFilterTest.Auditable.OU_FILTER);
ouFilter.setParameterList(CriteriaQueryWithAppliedFilterTest.Auditable.OU_FILTER_PARAM, Arrays.asList(1,2));
<span class="code-keyword" style="color: #000091">outer</span>.add(Subqueries.propertyIn(<span class="code-quote" style="color: #009100">"d.theId"</span>,theCriteria));
<span class="code-comment" style="color: #808080">//Limit it to 10 results
</span> <span class="code-keyword" style="color: #000091">outer</span>.setMaxResults(10);
<span class="code-comment" style="color: #808080">//Return the pages - Needed <span class="code-keyword" style="color: #000091; color: #808080">for</span> SQL Server as it does not <span class="code-keyword" style="color: #000091; color: #808080">do</span> limits
</span> <span class="code-keyword" style="color: #000091">outer</span>.setFirstResult((page -1 ) * pageSize);
<span class="code-keyword" style="color: #000091">final</span> List list = <span class="code-keyword" style="color: #000091">outer</span>.list();
<span class="code-comment" style="color: #808080">//<span class="code-keyword" style="color: #000091; color: #808080">final</span> List list = theCriteria.getExecutableCriteria(session).list();
</span> assertThat(list.size(), is (2));
});
}
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">static</span> class Auditable {
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">static</span> <span class="code-keyword" style="color: #000091">final</span> <span class="code-object" style="color: #910091">String</span> OU_CONDITIONS = <span class="code-quote" style="color: #009100">"(organisationUnit_id IN (:ous) OR organisationUnit_id IS NULL)"</span>;
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">static</span> <span class="code-keyword" style="color: #000091">final</span> <span class="code-object" style="color: #910091">String</span> OU_FILTER = <span class="code-quote" style="color: #009100">"filterByOus"</span>;
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">static</span> <span class="code-keyword" style="color: #000091">final</span> <span class="code-object" style="color: #910091">String</span> OU_FILTER_PARAM = <span class="code-quote" style="color: #009100">"ous"</span>;
}
@Entity(name = <span class="code-quote" style="color: #009100">"OrganisationUnit"</span>)
@Table(name = <span class="code-quote" style="color: #009100">"ORGANISATIONUNIT"</span>)
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">static</span> class OrganisationUnit {
<span class="code-keyword" style="color: #000091">public</span> OrganisationUnit() {}
<span class="code-keyword" style="color: #000091">public</span> OrganisationUnit(<span class="code-object" style="color: #910091">int</span> ou) {
<span class="code-keyword" style="color: #000091">this</span>.id = ou;
}
@Id
<span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">int</span> id;
}
@FilterDef(
name = <span class="code-quote" style="color: #009100">"statusFilter"</span>,
parameters = {
@ParamDef(
name = <span class="code-quote" style="color: #009100">"status"</span>, type = <span class="code-quote" style="color: #009100">"string"</span>
)
}
)
@FilterDef(name = CriteriaQueryWithAppliedFilterTest.Auditable.OU_FILTER, parameters = @ParamDef(name = CriteriaQueryWithAppliedFilterTest.Auditable.OU_FILTER_PARAM, type = <span class="code-quote" style="color: #009100">"integer"</span>))
@Filter(name = <span class="code-quote" style="color: #009100">"statusFilter"</span>, condition = <span class="code-quote" style="color: #009100">"STATUS = :status "</span>)
@Filter(name = CriteriaQueryWithAppliedFilterTest.Auditable.OU_FILTER, condition = CriteriaQueryWithAppliedFilterTest.Auditable.OU_CONDITIONS)
@Entity(name = <span class="code-quote" style="color: #009100">"Student"</span>)
@Table(name = <span class="code-quote" style="color: #009100">"STUDENT"</span>)
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">static</span> class Student <span class="code-keyword" style="color: #000091">extends</span> CriteriaQueryWithAppliedFilterTest.Auditable {
@ManyToOne(fetch = FetchType.LAZY)
<span class="code-keyword" style="color: #000091">private</span> CriteriaQueryWithAppliedFilterTest.OrganisationUnit organisationUnit;
@EmbeddedId
<span class="code-keyword" style="color: #000091">private</span> CriteriaQueryWithAppliedFilterTest.Identifier id;
<span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">int</span> theId;
<span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">String</span> name;
<span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">int</span> age;
@Column(name = <span class="code-quote" style="color: #009100">"STATUS"</span>)
<span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">String</span> status;
@Embedded
<span class="code-keyword" style="color: #000091">private</span> CriteriaQueryWithAppliedFilterTest.Address address;
<span class="code-keyword" style="color: #000091">public</span> void setOrganisationUnit(CriteriaQueryWithAppliedFilterTest.OrganisationUnit organisationUnit) {
<span class="code-keyword" style="color: #000091">this</span>.organisationUnit = organisationUnit;
}
<span class="code-keyword" style="color: #000091">public</span> void setTheId(<span class="code-object" style="color: #910091">int</span> id) {
<span class="code-keyword" style="color: #000091">this</span>.theId = id;
}
<span class="code-keyword" style="color: #000091">public</span> void setId(CriteriaQueryWithAppliedFilterTest.Identifier id) {
<span class="code-keyword" style="color: #000091">this</span>.id = id;
}
<span class="code-keyword" style="color: #000091">public</span> void setName(<span class="code-object" style="color: #910091">String</span> name) {
<span class="code-keyword" style="color: #000091">this</span>.name = name;
}
<span class="code-keyword" style="color: #000091">public</span> void setStatus(<span class="code-object" style="color: #910091">String</span> status) {
<span class="code-keyword" style="color: #000091">this</span>.status = status;
}
<span class="code-keyword" style="color: #000091">public</span> void setAge(<span class="code-object" style="color: #910091">int</span> age) {
<span class="code-keyword" style="color: #000091">this</span>.age = age;
}
<span class="code-keyword" style="color: #000091">public</span> void setAddress(CriteriaQueryWithAppliedFilterTest.Address address) {
<span class="code-keyword" style="color: #000091">this</span>.address = address;
}
}
@Embeddable
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">static</span> class Identifier <span class="code-keyword" style="color: #000091">implements</span> Serializable {
<span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">Integer</span> id1;
@Embedded
<span class="code-keyword" style="color: #000091">private</span> CriteriaQueryWithAppliedFilterTest.Identifier2 id2;
<span class="code-keyword" style="color: #000091">public</span> Identifier() {
}
<span class="code-keyword" style="color: #000091">public</span> Identifier(<span class="code-object" style="color: #910091">Integer</span> id1, CriteriaQueryWithAppliedFilterTest.Identifier2 id2) {
<span class="code-keyword" style="color: #000091">this</span>.id1 = id1;
<span class="code-keyword" style="color: #000091">this</span>.id2 = id2;
}
}
@Embeddable
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">static</span> class Identifier2 <span class="code-keyword" style="color: #000091">implements</span> Serializable {
<span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">Integer</span> id3;
<span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">Long</span> id4;
<span class="code-keyword" style="color: #000091">public</span> Identifier2() {
}
<span class="code-keyword" style="color: #000091">public</span> Identifier2(<span class="code-object" style="color: #910091">Integer</span> id1, <span class="code-object" style="color: #910091">Long</span> id2) {
<span class="code-keyword" style="color: #000091">this</span>.id3 = id1;
<span class="code-keyword" style="color: #000091">this</span>.id4 = id2;
}
}
@Embeddable
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">static</span> class Address <span class="code-keyword" style="color: #000091">implements</span> Serializable {
<span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">String</span> city;
<span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">String</span> street;
<span class="code-keyword" style="color: #000091">public</span> Address() {
}
<span class="code-keyword" style="color: #000091">public</span> Address(<span class="code-object" style="color: #910091">String</span> city, <span class="code-object" style="color: #910091">String</span> street) {
<span class="code-keyword" style="color: #000091">this</span>.city = city;
<span class="code-keyword" style="color: #000091">this</span>.street = street;
}
}
}
</pre>
</div>
</div> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0">This WILL work under your test environment and also on MySQL. Only when you use SQL Server does this fail because of the additional TOP() function at the start instead of at the end.</p> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0">The issue is caused by adding the filter and the filter changes the parameters order. But you can't have a filter on an inner query only. If you could then it would probably be fine.</p> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff">
<table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px">
<tbody>
<tr>
<td id="actions-pattern-container" valign="middle" style="padding: 0; border-collapse: collapse; padding: 10px 0 10px 24px; vertical-align: middle; padding-left: 0">
<table align="left" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td class="actions-pattern-action-icon-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HHH-11160#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none"> <img class="actions-pattern-action-icon-image" src="cid:jira-generated-image-static-comment-icon-849a386d-0368-4e04-8f51-af820ec4751c" alt="Add Comment" title="Add Comment" height="16" width="16" border="0" style="vertical-align: middle"> </a> </td>
<td class="actions-pattern-action-text-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; padding-left: 5px"> <a href="https://hibernate.atlassian.net/browse/HHH-11160#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none">Add Comment</a> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table> </td>
</tr>
<!-- there needs to be content in the cell for it to render in some clients -->
<tr>
<td class="email-content-rounded-bottom mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 5px; line-height: 5px; background-color: #ffffff; border-top: 0; border-left: 1px solid #cccccc; border-bottom: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; mso-line-height-rule: exactly" height="5" bgcolor="#ffffff"> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="footer-pattern" style="padding: 0; border-collapse: collapse; padding: 12px 20px">
<table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> This message was sent by Atlassian JIRA <span id="footer-build-information">(v1000.383.2#100014-<span title="783d42561fdcfe98ce52c7c3d24c33d56126c5a5" data-commit-id="783d42561fdcfe98ce52c7c3d24c33d56126c5a5}">sha1:783d425</span>)</span> </td>
<td id="footer-pattern-logo-desktop-container" valign="top" style="padding: 0; border-collapse: collapse; padding-left: 20px; vertical-align: top">
<table style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="footer-pattern-logo-desktop-padding" style="padding: 0; border-collapse: collapse; padding-top: 3px"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-bcfd39ff-2039-43ba-a29e-cfe22f24ae78" alt="Atlassian logo" title="Atlassian logo" width="169" height="36" class="image_fix"> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table>
</body>
</html>