https://dev.e-taxonomy.eu/redmine/
https://dev.e-taxonomy.eu/redmine/redmine/favicon.ico?1469191485
2021-02-26T13:38:08Z
EDIT Project Management
EDIT - bug #9483: LazyInitializationException (LIE) in TaxonNamePopupEditor when selecting trinominal rank
https://dev.e-taxonomy.eu/redmine/issues/9483?journal_id=58574
2021-02-26T13:38:08Z
Andreas Kohlbecker
<ul><li><strong>Status</strong> changed from <i>New</i> to <i>Resolved</i></li><li><strong>% Done</strong> changed from <i>0</i> to <i>50</i></li></ul><p>Applied in changeset <a class="changeset" title="fix #9483 adapting bean initialization in .TaxonNameDaoHibernateImpl.prepareFindTaxonNameParts(....." href="https://dev.e-taxonomy.eu/redmine/projects/edit/repository/cdmlib/revisions/e20135dca8ba5443b97814e31ad18cdc93036865">cdmlib|e20135dca8ba5443b97814e31ad18cdc93036865</a>.</p>
EDIT - bug #9483: LazyInitializationException (LIE) in TaxonNamePopupEditor when selecting trinominal rank
https://dev.e-taxonomy.eu/redmine/issues/9483?journal_id=58575
2021-02-26T14:40:42Z
Andreas Kohlbecker
<ul><li><strong>Assignee</strong> changed from <i>Andreas Kohlbecker</i> to <i>Wolf-Henning Kusber</i></li></ul><p>please review</p>
EDIT - bug #9483: LazyInitializationException (LIE) in TaxonNamePopupEditor when selecting trinominal rank
https://dev.e-taxonomy.eu/redmine/issues/9483?journal_id=58583
2021-02-26T16:57:20Z
Wolf-Henning Kusber
<ul><li><strong>Assignee</strong> changed from <i>Wolf-Henning Kusber</i> to <i>Andreas Kohlbecker</i></li></ul><p>Review: Internal error when selecting variety of form, instead of opening a third field for the last epithet.</p>
EDIT - bug #9483: LazyInitializationException (LIE) in TaxonNamePopupEditor when selecting trinominal rank
https://dev.e-taxonomy.eu/redmine/issues/9483?journal_id=58644
2021-03-01T14:08:54Z
Andreas Kohlbecker
<ul></ul><p>Usually we are passing initStrategies to the service methods in order to initialize associated entities. In this case this way would not be appropriate since the method causing the LIE is member method of the Class which is being used in a <code>select new {constructor}</code> expression. <br>
Therefore the proper most solution for this problem would be to initialize the rank.vocabulary directly in the <code>TaxonNameDaoHibernateImpl</code>. <br>
This however is not (yet?) working due to a specific interpretation of the JPA language specs: <a href="https://hibernate.atlassian.net/browse/HHH-3345">https://hibernate.atlassian.net/browse/HHH-3345</a> so the following code will not work:</p>
<pre><code class="java syntaxhl"><span class="kd">private</span> <span class="nc">StringBuilder</span> <span class="nf">prepareFindTaxonNameParts</span><span class="o">(</span><span class="kt">boolean</span> <span class="n">doCount</span><span class="o">,</span> <span class="nc">Optional</span><span class="o"><</span><span class="nc">String</span><span class="o">></span> <span class="n">genusOrUninomial</span><span class="o">,</span>
<span class="nc">Optional</span><span class="o"><</span><span class="nc">String</span><span class="o">></span> <span class="n">infraGenericEpithet</span><span class="o">,</span> <span class="nc">Optional</span><span class="o"><</span><span class="nc">String</span><span class="o">></span> <span class="n">specificEpithet</span><span class="o">,</span>
<span class="nc">Optional</span><span class="o"><</span><span class="nc">String</span><span class="o">></span> <span class="n">infraSpecificEpithet</span><span class="o">,</span> <span class="nc">Rank</span> <span class="n">rank</span><span class="o">,</span> <span class="nc">Collection</span><span class="o"><</span><span class="no">UUID</span><span class="o">></span> <span class="n">excludedNamesUuids</span><span class="o">)</span> <span class="o">{</span>
<span class="nc">StringBuilder</span> <span class="n">hql</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">StringBuilder</span><span class="o">();</span>
<span class="k">if</span><span class="o">(</span><span class="n">doCount</span><span class="o">){</span>
<span class="n">hql</span><span class="o">.</span><span class="na">append</span><span class="o">(</span><span class="s">"select count(n.id) "</span><span class="o">);</span>
<span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
<span class="n">hql</span><span class="o">.</span><span class="na">append</span><span class="o">(</span><span class="s">"select new eu.etaxonomy.cdm.persistence.dto.TaxonNameParts(n.id, n.uuid, n.rank, n.genusOrUninomial, n.infraGenericEpithet, n.specificEpithet, n.infraSpecificEpithet) "</span><span class="o">);</span>
<span class="o">}</span>
<span class="n">hql</span><span class="o">.</span><span class="na">append</span><span class="o">(</span><span class="s">"from TaxonName n "</span><span class="o">);</span>
<span class="k">if</span><span class="o">(!</span><span class="n">doCount</span><span class="o">){</span>
<span class="c1">// >>>>>>>>>>>>>> need to initialize the ranks with vocabulary to avoid LIEs in TaxonNameParts.rankSpecificNamePart() see #9483</span>
<span class="c1">// >>>>>>>>>>>>>> This will not work due to HHH-3345 </span>
<span class="n">hql</span><span class="o">.</span><span class="na">append</span><span class="o">(</span><span class="s">"left join fetch n.rank as r left join fetch r.vocabulary as v "</span><span class="o">);</span>
<span class="o">}</span>
<span class="n">hql</span><span class="o">.</span><span class="na">append</span><span class="o">(</span><span class="s">"where 1 = 1 "</span><span class="o">);</span>
<span class="k">if</span><span class="o">(</span><span class="n">rank</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">){</span>
<span class="n">hql</span><span class="o">.</span><span class="na">append</span><span class="o">(</span><span class="s">"and n.rank = :rank "</span><span class="o">);</span>
<span class="o">}</span>
<span class="k">if</span><span class="o">(</span><span class="n">excludedNamesUuids</span> <span class="o">!=</span> <span class="kc">null</span> <span class="o">&&</span> <span class="n">excludedNamesUuids</span><span class="o">.</span><span class="na">size</span><span class="o">()</span> <span class="o">></span> <span class="mi">0</span><span class="o">){</span>
<span class="n">hql</span><span class="o">.</span><span class="na">append</span><span class="o">(</span><span class="s">"and n.uuid not in ( :excludedNamesUuids ) "</span><span class="o">);</span>
<span class="o">}</span>
<span class="n">addFieldPredicate</span><span class="o">(</span><span class="n">hql</span><span class="o">,</span> <span class="s">"n.genusOrUninomial"</span><span class="o">,</span> <span class="n">genusOrUninomial</span><span class="o">);</span>
<span class="n">addFieldPredicate</span><span class="o">(</span><span class="n">hql</span><span class="o">,</span> <span class="s">"n.infraGenericEpithet"</span><span class="o">,</span> <span class="n">infraGenericEpithet</span><span class="o">);</span>
<span class="n">addFieldPredicate</span><span class="o">(</span><span class="n">hql</span><span class="o">,</span> <span class="s">"n.specificEpithet"</span><span class="o">,</span> <span class="n">specificEpithet</span><span class="o">);</span>
<span class="n">addFieldPredicate</span><span class="o">(</span><span class="n">hql</span><span class="o">,</span> <span class="s">"n.infraSpecificEpithet"</span><span class="o">,</span> <span class="n">infraSpecificEpithet</span><span class="o">);</span>
<span class="k">return</span> <span class="n">hql</span><span class="o">;</span>
<span class="o">}</span>
</code></pre>
<p>Therefore I decided to initialize the rank.vocabulary in the constructor:</p>
<pre><code class="java syntaxhl"> <span class="kd">public</span> <span class="nf">TaxonNameParts</span><span class="o">(</span><span class="nc">Integer</span> <span class="n">taxonNameId</span><span class="o">,</span> <span class="no">UUID</span> <span class="n">taxonNameUuid</span><span class="o">,</span> <span class="nc">Rank</span> <span class="n">rank</span><span class="o">,</span> <span class="nc">String</span> <span class="n">genusOrUninomial</span><span class="o">,</span> <span class="nc">String</span> <span class="n">infraGenericEpithet</span><span class="o">,</span>
<span class="nc">String</span> <span class="n">specificEpithet</span><span class="o">,</span> <span class="nc">String</span> <span class="n">infraSpecificEpithet</span><span class="o">)</span> <span class="o">{</span>
<span class="kd">super</span><span class="o">();</span>
<span class="k">this</span><span class="o">.</span><span class="na">taxonNameId</span> <span class="o">=</span> <span class="n">taxonNameId</span><span class="o">;</span>
<span class="k">this</span><span class="o">.</span><span class="na">taxonNameUuid</span> <span class="o">=</span> <span class="n">taxonNameUuid</span><span class="o">;</span>
<span class="k">this</span><span class="o">.</span><span class="na">rank</span> <span class="o">=</span> <span class="n">rank</span><span class="o">;</span>
<span class="k">if</span><span class="o">(</span><span class="n">rank</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
<span class="nc">HibernateBeanInitializer</span><span class="o">.</span><span class="na">initialize</span><span class="o">(</span><span class="n">rank</span><span class="o">.</span><span class="na">getVocabulary</span><span class="o">());</span>
<span class="o">}</span>
<span class="k">this</span><span class="o">.</span><span class="na">genusOrUninomial</span> <span class="o">=</span> <span class="n">genusOrUninomial</span><span class="o">;</span>
<span class="k">this</span><span class="o">.</span><span class="na">infraGenericEpithet</span> <span class="o">=</span> <span class="n">infraGenericEpithet</span><span class="o">;</span>
<span class="k">this</span><span class="o">.</span><span class="na">specificEpithet</span> <span class="o">=</span> <span class="n">specificEpithet</span><span class="o">;</span>
<span class="k">this</span><span class="o">.</span><span class="na">infraSpecificEpithet</span> <span class="o">=</span> <span class="n">infraSpecificEpithet</span><span class="o">;</span>
<span class="o">}</span>
</code></pre>
EDIT - bug #9483: LazyInitializationException (LIE) in TaxonNamePopupEditor when selecting trinominal rank
https://dev.e-taxonomy.eu/redmine/issues/9483?journal_id=58645
2021-03-01T14:11:31Z
Andreas Kohlbecker
<ul><li><strong>Assignee</strong> changed from <i>Andreas Kohlbecker</i> to <i>Wolf-Henning Kusber</i></li></ul><p>Hi Henning, this issue can be reviewed again.</p>
EDIT - bug #9483: LazyInitializationException (LIE) in TaxonNamePopupEditor when selecting trinominal rank
https://dev.e-taxonomy.eu/redmine/issues/9483?journal_id=58652
2021-03-01T15:36:03Z
Andreas Kohlbecker
<ul><li><strong>Description</strong> updated (<a title="View differences" href="/redmine/journals/58652/diff?detail_id=72988">diff</a>)</li></ul>
EDIT - bug #9483: LazyInitializationException (LIE) in TaxonNamePopupEditor when selecting trinominal rank
https://dev.e-taxonomy.eu/redmine/issues/9483?journal_id=58670
2021-03-01T15:50:08Z
Andreas Kohlbecker
<ul><li><strong>Copied to</strong> <i><a class="issue tracker-6 status-5 priority-10 priority-lowest closed" href="/redmine/issues/9490">task #9490</a>: avoid rank entity in TaxonNameParts </i> added</li></ul>
EDIT - bug #9483: LazyInitializationException (LIE) in TaxonNamePopupEditor when selecting trinominal rank
https://dev.e-taxonomy.eu/redmine/issues/9483?journal_id=58672
2021-03-01T15:50:44Z
Andreas Kohlbecker
<ul></ul><p>new ticket for possibly better solution <a class="issue tracker-6 status-5 priority-10 priority-lowest closed" title="task: avoid rank entity in TaxonNameParts (Closed)" href="https://dev.e-taxonomy.eu/redmine/issues/9490">#9490</a></p>
EDIT - bug #9483: LazyInitializationException (LIE) in TaxonNamePopupEditor when selecting trinominal rank
https://dev.e-taxonomy.eu/redmine/issues/9483?journal_id=58680
2021-03-01T16:58:49Z
Wolf-Henning Kusber
<ul><li><strong>Assignee</strong> changed from <i>Wolf-Henning Kusber</i> to <i>Andreas Kohlbecker</i></li><li><strong>% Done</strong> changed from <i>50</i> to <i>100</i></li></ul><p>Trinominals can be created and stored. If this is due to <a class="issue tracker-4 status-5 priority-10 priority-lowest closed" title="bug: LazyInitializationException (LIE) in TaxonNamePopupEditor when selecting trinominal rank (Closed)" href="https://dev.e-taxonomy.eu/redmine/issues/9483">#9483</a> this ticket can be closed.</p>
EDIT - bug #9483: LazyInitializationException (LIE) in TaxonNamePopupEditor when selecting trinominal rank
https://dev.e-taxonomy.eu/redmine/issues/9483?journal_id=58697
2021-03-02T08:36:59Z
Andreas Kohlbecker
<ul><li><strong>Status</strong> changed from <i>Resolved</i> to <i>Closed</i></li></ul>