{"id":163,"date":"2020-03-16T09:21:14","date_gmt":"2020-03-16T08:21:14","guid":{"rendered":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=163"},"modified":"2022-12-05T09:21:32","modified_gmt":"2022-12-05T08:21:32","slug":"detached-entities-von-jpa-abfragen","status":"publish","type":"post","link":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=163","title":{"rendered":"Detached Entities von JPA Abfragen"},"content":{"rendered":"\n<p>Neulich ergab sich die Frage, wie man sicherstellen kann, dass die Objekte aus einer JPA Anfrage nicht attached sind, um dies nicht versehentlich zu ver\u00e4ndern. Hierbei gibt es den &#8222;direkten Weg&#8220;.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Direkter Weg<\/h3>\n\n\n\n<p>Wir durchlaufen die Ergebnisliste und rufen f\u00fcr die Objekte die detach Funktion des Entitymanagers auf.<\/p>\n\n\n\n<p>Offensichtlich ist dieser Weg nicht sehr elegant.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Transaktion<\/h3>\n\n\n\n<p>Das gleiche Resultat kann erreicht werden, wenn die Abfrage in einer eigenen Transaktion des Entitymanagers gestartet werden. Es wird die Annotation<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> \n@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)\n<\/pre>\n\n\n\n<p>an der entsprechenden Methode gesetzt. Aber Achtung: bei Aufrufen innerhalb einer EJB wird dieses Attribut nicht ausgewertet. Es muss also der Aufruf &#8222;von au\u00dfen&#8220; also einer anderen EJB oder Managed Bean erfolgen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neulich ergab sich die Frage, wie man sicherstellen kann, dass die Objekte aus einer JPA Anfrage nicht attached sind, um dies nicht versehentlich zu ver\u00e4ndern. Hierbei gibt es den &#8222;direkten Weg&#8220;. Direkter Weg Wir durchlaufen die Ergebnisliste und rufen f\u00fcr die Objekte die detach Funktion des Entitymanagers auf. Offensichtlich ist dieser Weg nicht sehr elegant. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-163","post","type-post","status-publish","format-standard","hentry","category-jee"],"_links":{"self":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/163","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=163"}],"version-history":[{"count":1,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/163\/revisions"}],"predecessor-version":[{"id":164,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/163\/revisions\/164"}],"wp:attachment":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}