<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Palatino Linotype";
        panose-1:2 4 5 2 5 5 5 3 3 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Palatino Linotype";
        color:windowtext;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Palatino Linotype";
        color:blue;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Palatino Linotype";
        color:blue;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal style='margin-bottom:12.0pt'><span class=postbody1><b><font
size=1 face=Verdana><span style='font-size:9.0pt;font-family:Verdana;
font-weight:bold'>Hibernate version:</span></font></b></span><span
class=postbody1><font size=1 face=Verdana><span style='font-size:9.0pt;
font-family:Verdana'> </span></font></span><font size=1 face=Verdana><span
style='font-size:9.0pt;font-family:Verdana'><br>
<span class=postbody1>3.2.6 </span><br>
<br>
<span class=postbody1>We<font color=blue><span style='color:blue'> </span></font>ran
into an issue where detached query causes stale query cache entries. Our
example is to retrieve a list of our favorite dogs. We use a separate table
called favorite_animal to store our favorite animals, including dogs. </span><br>
<br>
<span class=postbody1>For example, our main query is the following, </span><br>
<br>
<span class=postbody1>from Dog </span><br>
<br>
<span class=postbody1>And we use a detached query to select our favorite Dog, </span><br>
<span class=postbody1>select fa.animal_id from favoriate_animal fa where
fa.user_id = :user_id </span><br>
<br>
<span class=postbody1>The combined SQL looks like the following, </span><br>
<span class=postbody1>from Dog dog where dog.id in (select fa.animal_id from
favoriate_animal fa where fa.user_id = :user_id) </span><br>
<br>
<span class=postbody1>There is our problem. We execute the above query once and
get a list of dogs back. We then remove one dog from our favorite list and then
run the above query again. We are expected to see one less dog in our result
but we got the same list as before! </span><br>
<br>
<span class=postbody1>It turns out that the query cache entry was not
invalidated when we removed one dog from the favorite list. I dug a little and
it seems like the query spaces used to look up invalidated entity names are
only built from associated criteria, but not from detached query or detached
query based criterion. </span><br>
<br>
<span class=postbody1>In our example, the query spaces will only contain [DOG]
entity. </span><br>
<br>
<span class=postbody1>I had made some changes to CriteriaQueryTranslator to
include additional query spaces from detached queries in getQuerySpaces method
in CriteriaQueryTranslator but want to make sure that I am on the right track. </span><br>
<br>
<span class=postbody1>After my fix, the query spaces will contain
[DOG,FAVORITE_ANIMAL]. </span><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face=Verdana><span style='font-size:9.0pt;
font-family:Verdana'>I am attaching a patch as well.<o:p></o:p></span></font></p>

<p class=MsoNormal><span class=postbody1><font size=1 face=Verdana><span
style='font-size:9.0pt;font-family:Verdana'>Thanks for your feedback and
comments. </span></font><o:p></o:p></span></p>

<p class=MsoNormal><span class=postbody1><font size=1 face=Verdana><span
style='font-size:9.0pt;font-family:Verdana'>-- Lei</span></font></span><font
size=2 face="Palatino Linotype"><span style='font-size:11.0pt;font-family:"Palatino Linotype"'><o:p></o:p></span></font></p>

</div>

</body>

</html>