blob: 0161a1d904417f95d0f10d69f7c3c92e5492fa6e [file] [log] [blame]
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>3.&nbsp; OpenJPA 2.3.0</title><base href="display"><link rel="stylesheet" type="text/css" href="css/docbook.css"><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="manual.html" title="Apache OpenJPA 3.0 User's Guide"><link rel="up" href="migration_considerations.html" title="Appendix&nbsp;3.&nbsp; Migration Considerations"><link rel="prev" href="jpa_2.2.html" title="2.&nbsp; OpenJPA 2.2.0"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.&nbsp;
OpenJPA 2.3.0
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="jpa_2.2.html">Prev</a>&nbsp;</td><th width="60%" align="center">Appendix&nbsp;3.&nbsp;
Migration Considerations
</th><td width="20%" align="right">&nbsp;</td></tr></table><hr></div><div class="section" id="jpa_2.3"><div class="titlepage"><div><div><h2 class="title" style="clear: both">3.&nbsp;
OpenJPA 2.3.0
</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="jpa_2.3.html#jpa_2.3_incompatibilities">3.1. Incompatibilities</a></span></dt><dd><dl><dt><span class="section"><a href="jpa_2.3.html#jpa_2.3_MappingTool">3.1.1.
MappingTool Behavior for DB2 and Derby
</a></span></dt><dt><span class="section"><a href="jpa_2.3.html#jpa_2.3_RequiresSearchStringEscapeForLike">3.1.2.
RequiresSearchStringEscapeForLike DBDictionary Property
</a></span></dt><dt><span class="section"><a href="jpa_2.3.html#ReturnNullOnEmptyAggregateResult">3.1.3.
Return value of aggregate functions in SELECT clause
</a></span></dt></dl></dd></dl></div>
<div class="section" id="jpa_2.3_incompatibilities"><div class="titlepage"><div><div><h3 class="title">3.1.&nbsp;Incompatibilities</h3></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="jpa_2.3.html#jpa_2.3_MappingTool">3.1.1.
MappingTool Behavior for DB2 and Derby
</a></span></dt><dt><span class="section"><a href="jpa_2.3.html#jpa_2.3_RequiresSearchStringEscapeForLike">3.1.2.
RequiresSearchStringEscapeForLike DBDictionary Property
</a></span></dt><dt><span class="section"><a href="jpa_2.3.html#ReturnNullOnEmptyAggregateResult">3.1.3.
Return value of aggregate functions in SELECT clause
</a></span></dt></dl></div>
<p>
The following sections indicate changes that are incompatible
between OpenJPA 2.2.x releases and the 2.3.0 release.
</p>
<div class="section" id="jpa_2.3_MappingTool"><div class="titlepage"><div><div><h4 class="title">3.1.1.&nbsp;
MappingTool Behavior for DB2 and Derby
</h4></div></div></div>
<p>
In previous releases, the MappingTool mapped <code class="literal">java.math.BigDecimal</code> fields to the database type
DOUBLE, and as such, ignored <code class="literal">column</code> and <code class="literal">precision</code> values that might have been specified via the
<code class="literal">javax.persistence.Column</code> annotation.
</p>
<p>
From the 2.3.0 release, <code class="literal">java.math.BigDecimal</code> fields are now mapped to the database type DECIMAL
and it is very likely that you will need to specify <code class="literal">column</code> and <code class="literal">precision</code> via
the <code class="literal">javax.persistence.Column</code> annotation.
</p>
</div>
<div class="section" id="jpa_2.3_RequiresSearchStringEscapeForLike"><div class="titlepage"><div><div><h4 class="title">3.1.2.&nbsp;
RequiresSearchStringEscapeForLike DBDictionary Property
</h4></div></div></div>
<p>
In previous releases, the default value for the property RequiresSearchStringEscapeForLike is true and caused the
unexpected escape clause appended to the SQL statement.
For example, user created a named query like this:
</p><pre class="programlisting"> SELECT o.computerName FROM CompUser o WHERE o.name LIKE ?</pre><p>
At run time the following query is generated:
</p><pre class="programlisting"> SELECT t0.computerName FROM CompUser t0 WHERE (t0.name LIKE ? ESCAPE '\')</pre><p>
ESCAPE '\' shouldn't be appended to the query.
</p>
<p>
From the 2.3.0 release, RequiresSearchStringEscapeForLike property is set to false by default. You can configure
RequiresSearchStringEscapeForLike property to be true if the old behavior is desired.
</p>
</div>
<div class="section" id="ReturnNullOnEmptyAggregateResult"><div class="titlepage"><div><div><h4 class="title">3.1.3.&nbsp;
Return value of aggregate functions in SELECT clause
</h4></div></div></div>
<p>
The JPA specification states "If SUM, AVG, MAX, or MIN is used, and there are no values to which the aggregate function can be
applied, the result of the aggregate function is NULL." Prior to this update, OpenJPA incorrectly returned 0 for SUM, AVG, MIN,
and MAX when a state field being aggregated is numeric. This behavior affects both JPQL and Criteria queries. With this update,
OpenJPA will return a null result value for these aggregate functions when a query returns no result.
</p>
<p>
To re-enable the prior behavior, you need to set the following persistence property in your persistence.xml or when
creating an EntityManagerFactory.
</p><pre class="programlisting">
&lt;property name="openjpa.Compatibility" value="ReturnNullOnAggregateResult=false"/&gt;
</pre><p>
</p>
</div>
</div>
</div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="jpa_2.2.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="migration_considerations.html">Up</a></td><td width="40%" align="right">&nbsp;</td></tr><tr><td width="40%" align="left" valign="top">2.&nbsp;
OpenJPA 2.2.0
&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="manual.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;</td></tr></table></div></body></html>