{"id":257,"date":"2023-11-15T12:47:52","date_gmt":"2023-11-15T11:47:52","guid":{"rendered":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=257"},"modified":"2023-11-15T12:48:07","modified_gmt":"2023-11-15T11:48:07","slug":"spass-mit-sqeuenzen-in-jee-jpa","status":"publish","type":"post","link":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=257","title":{"rendered":"Spa\u00df mit Sqeuenzen in JEE \/ JPA"},"content":{"rendered":"\n<p>Umgebung<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>JBoss 7.x<\/li>\n\n\n\n<li>Hibernate<\/li>\n\n\n\n<li>Oracle<\/li>\n<\/ul>\n\n\n\n<p>In einer Entit\u00e4t war ein Sequence Generator wie folgt definiert <\/p>\n\n\n\n<p><code>@SequenceGenerator(name = \"SEQ_OBJECTID\", allocationSize = 100) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = \"SEQ_MY_OBJECT\")<\/code><\/p>\n\n\n\n<p><code>@Id <\/code><\/p>\n\n\n\n<p><code>private Long id;<\/code><\/p>\n\n\n\n<p>In der Datenbank wurde die Sequenz wie folgt angelegt worden<\/p>\n\n\n\n<p><code>CREATE SEQUENCE SEQ_OBJECTID START WITH 1000000000 MAXVALUE 1000000000000000000 INCREMENT BY 1 MINVALUE 1000000000 NOCACHE;<\/code><\/p>\n\n\n\n<p>Da die Sequenz in der Datenbank ein Inkrement von 1 hat, in JPA aber hunderter Bl\u00f6cke erwartet werden, beginnt die Nummerierung der Id ggf. unerwartet bei -99. Dieses eher optische Problem ist nicht das einzige. Bei der n\u00e4chsten nextval Anfrage liefert die DB 2. JPA beginnt den Block somit bei 98 und es kommt zu dem Versuch einen schon existierenden Schl\u00fcssel in die Datenbanktabelle einzutragen. Dies f\u00fchrt zu einer Exception.<\/p>\n\n\n\n<p>Es ist also wichtig, die Werte der Sequenzen in JPA und der DB synchron zu halten.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Umgebung In einer Entit\u00e4t war ein Sequence Generator wie folgt definiert @SequenceGenerator(name = &#8222;SEQ_OBJECTID&#8220;, allocationSize = 100) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = &#8222;SEQ_MY_OBJECT&#8220;) @Id private Long id; In der Datenbank wurde die Sequenz wie folgt angelegt worden CREATE SEQUENCE SEQ_OBJECTID START WITH 1000000000 MAXVALUE 1000000000000000000 INCREMENT BY 1 MINVALUE 1000000000 NOCACHE; Da die Sequenz in [&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-257","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\/257","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=257"}],"version-history":[{"count":1,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/257\/revisions"}],"predecessor-version":[{"id":258,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/257\/revisions\/258"}],"wp:attachment":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=257"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=257"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=257"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}