 <p>What type of cache do you use?</p> <p>This sequence works fine for me:</p> <pre><code>child.setParent(parent); parent.getChildren().add(child); session.saveOrUpdate(child); session.flush(); </code></pre> <p>Also, make sure that you REALLY need that cache. In my experience, 2-nd level cache rarely accelerates real applications and yet creates a lot of problems.</p>