{"id":200,"date":"2023-02-08T06:49:44","date_gmt":"2023-02-08T05:49:44","guid":{"rendered":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=200"},"modified":"2023-02-08T10:25:04","modified_gmt":"2023-02-08T09:25:04","slug":"ecliselink-manytoone-erzeugt-inserts-eclipselink-id-validation","status":"publish","type":"post","link":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=200","title":{"rendered":"Ecliselink @ManyToOne erzeugt Inserts &#8211; eclipselink.id-validation"},"content":{"rendered":"\n<p>Wenn in einer Entit\u00e4t eine andere mit einer <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@ManyToOne<\/code><\/pre>\n\n\n\n<p>angebunden wurde, pr\u00fcft Eclipslink, ob die angebundene Entit\u00e4t persistiert werden muss (und eine neue Sequenznummer gew\u00e4hlt werden soll). Wird die angebundene Entit\u00e4t als ung\u00fcltig klassifiziert, wird ein INSERT erzeugt. Fr\u00fcher konnten die Werte &#8222;0&#8220; als erlaubte IDs mit der Optionen (in der <code>persistence.xml<\/code>)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;<strong>property name<\/strong>=\"eclipselink.allow-zero-id\" <strong>value<\/strong>=\"true\"\/&gt;<\/code><\/pre>\n\n\n\n<p>verwendet werden. War diese true, wurden Entit\u00e4ten mit einer primitiven ID und dem Wert &#8222;0&#8220; als g\u00fcltig eingestuft. Diese Option wurde durch<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;<strong>property<\/strong> <strong>name<\/strong>=\"eclipselink.id-validation\" <strong>value<\/strong>=\"...\"\/&gt;<\/code><\/pre>\n\n\n\n<p>ersetzt und erweitert. Vergleiche auch<\/p>\n\n\n\n<p><a href=\"https:\/\/www.eclipse.org\/eclipselink\/api\/2.7\/org\/eclipse\/persistence\/config\/PersistenceUnitProperties.html\">https:\/\/www.eclipse.org\/eclipselink\/api\/2.7\/org\/eclipse\/persistence\/config\/PersistenceUnitProperties.html<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.eclipse.org\/eclipselink\/api\/4.0\/eclipselink\/org\/eclipse\/persistence\/annotations\/IdValidation.html\">https:\/\/www.eclipse.org\/eclipselink\/api\/4.0\/eclipselink\/org\/eclipse\/persistence\/annotations\/IdValidation.html<\/a><\/p>\n\n\n\n<p>Bei zusammengesetzten IDs ist NULL default. Bei &#8222;einfachen&#8220; IDs ist ZERO default. Das hat Folgen! Nehmen wir den Fall:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Entit\u00e4t A (Komp. ID) --@ManyToOne-&gt; Entit\u00e4t B (Komp. ID) --@ManyToOne-&gt; Entit\u00e4t C (ID \"0\")<\/code><\/pre>\n\n\n\n<p>In der Standardeinstellung versucht Eclipselinkbeim Speichern von A einen neuen Datensatz von C anzulegen, da die Pr\u00fcfung der ID &#8222;ung\u00fcltig&#8220; liefert. Da der Datensatz mit 0 aber vermutlich schon in der DB ist, wird ein entsprechender Fehler geworfen.<\/p>\n\n\n\n<p>Ich pers\u00f6nlich f\u00e4nde ein NULL als Default Konfiguration besser, da das obige Verhalten aus meiner Sicht nicht unbedingt intuitiv ist. Bei NONE werden ggf. auch Sequenzen nicht erkannt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn in einer Entit\u00e4t eine andere mit einer angebunden wurde, pr\u00fcft Eclipslink, ob die angebundene Entit\u00e4t persistiert werden muss (und eine neue Sequenznummer gew\u00e4hlt werden soll). Wird die angebundene Entit\u00e4t als ung\u00fcltig klassifiziert, wird ein INSERT erzeugt. Fr\u00fcher konnten die Werte &#8222;0&#8220; als erlaubte IDs mit der Optionen (in der persistence.xml) verwendet werden. War diese [&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,7],"tags":[],"class_list":["post-200","post","type-post","status-publish","format-standard","hentry","category-jee","category-wildfly"],"_links":{"self":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/200","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=200"}],"version-history":[{"count":7,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/200\/revisions"}],"predecessor-version":[{"id":209,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/200\/revisions\/209"}],"wp:attachment":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}