DataNucleus JIRA is now in read-only mode. Raise any new issues in GitHub against the plugin that it applies to. DataNucleus JIRA will remain for the foreseeable future but will eventually be discontinued
Issue Details (XML | Word | Printable)

Key: NUCRDBMS-815
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Minor Minor
Assignee: Unassigned
Reporter: Florian Schmitt
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
DataNucleus Store RDBMS

NullPointerException when setting multiple Date parameters

Created: 28/Jul/14 05:50 PM   Updated: 10/Aug/14 12:57 PM   Resolved: 30/Jul/14 03:02 PM
Component/s: None
Affects Version/s: 4.0.1
Fix Version/s: 4.0.2

Environment: Windows 7 64bit, Java 1.8.0_05

Datastore: MySQL
Severity: Production


 Description  « Hide
Im getting a NullPointerException when setting multiple Date parameters on an JPA single string query.

(why cant I attach files here?) [additionally the link 'this guide' below this box is not working...]

Here is a test entity:

@Entity
@Table(name = "test_date")
@TableGenerator(name = "test_date_id", allocationSize = 1)
@Getter
@Setter
public class TestDate implements Serializable
{

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "test_date_id")
@Basic(optional = false)
@Column(name = "id", nullable = false)
private Long id;

@Index
@Basic(optional = false)
@Column(name = "date", nullable = false)
@Temporal(TemporalType.DATE)
private Date date;

@Index
@Basic(optional = false)
@Column(name = "date2", nullable = false)
@Temporal(TemporalType.DATE)
private Date date2;

        equals/toString...
}


The following query works:

entityManager.createQuery("Select x From TestDate x Where x.date = :date", TestDate.class)//
.setParameter("date", dateValue) //
.getResultList(); //



This query does not work anymore:

entityManager.createQuery("Select x From TestDate x Where x.date = :date And x.date2 = :date2", TestDate.class)//
.setParameter("date", dateValue) //
.setParameter("date2", dateValue) //
.getResultList(); //



This is the stacktrace:

Caused by: java.lang.NullPointerException
at org.datanucleus.store.rdbms.sql.expression.TemporalLiteral.toString(TemporalLiteral.java:141)
at java.lang.String.valueOf(String.java:2979)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at org.datanucleus.store.rdbms.sql.expression.ExpressionUtils.checkAndCorrectLiteralForConsistentMappingsForBooleanComparison(ExpressionUtils.java:633)
at org.datanucleus.store.rdbms.sql.expression.ExpressionUtils.checkAndCorrectExpressionMappingsForBooleanComparison(ExpressionUtils.java:567)
at org.datanucleus.store.rdbms.query.QueryToSQLMapper.processEqExpression(QueryToSQLMapper.java:1679)
at org.datanucleus.query.evaluator.AbstractExpressionEvaluator.compileRelationalExpression(AbstractExpressionEvaluator.java:78)
at org.datanucleus.query.evaluator.AbstractExpressionEvaluator.compileOrAndExpression(AbstractExpressionEvaluator.java:66)
at org.datanucleus.query.evaluator.AbstractExpressionEvaluator.evaluate(AbstractExpressionEvaluator.java:46)
at org.datanucleus.query.expression.Expression.evaluate(Expression.java:332)
at org.datanucleus.query.expression.DyadicExpression.evaluate(DyadicExpression.java:75)
at org.datanucleus.query.expression.DyadicExpression.evaluate(DyadicExpression.java:72)
at org.datanucleus.store.rdbms.query.QueryToSQLMapper.compileFilter(QueryToSQLMapper.java:465)
at org.datanucleus.store.rdbms.query.QueryToSQLMapper.compile(QueryToSQLMapper.java:385)
at org.datanucleus.store.rdbms.query.JPQLQuery.compileQueryFull(JPQLQuery.java:846)
at org.datanucleus.store.rdbms.query.JPQLQuery.compileInternal(JPQLQuery.java:308)
at org.datanucleus.store.query.Query.setImplicitParameter(Query.java:861)
at org.datanucleus.store.rdbms.query.JPQLQuery.setImplicitParameter(JPQLQuery.java:165)
at org.datanucleus.api.jpa.JPAQuery.setParameter(JPAQuery.java:506)


This actually happens at the time the first parameter is set, so thats why the second parameter is still null...

Andy Jefferson added a comment - 28/Jul/14 07:01 PM
"this guide" link fixed thx, but then it is quoted in all docs, forum, JIRA front page etc.

Why you can't attach files only you can answer. I can. Others can.

Andy Jefferson made changes - 28/Jul/14 07:01 PM
Field Original Value New Value
Priority Major [ 3 ] No Testcase [ 6 ]
Florian Schmitt added a comment - 29/Jul/14 12:10 PM
Ok, I got it now, thanks! It seems you can't attach file at the time, when you report a bug, but only afterwards... I didn't know that.

Here is the test case:
https://github.com/florianschmitt/test-jpa

Andy Jefferson made changes - 30/Jul/14 10:02 AM
Priority No Testcase [ 6 ] Minor [ 4 ]
Andy Jefferson added a comment - 30/Jul/14 03:02 PM
GitHub master simply changes the toString to check for null value.

Andy Jefferson made changes - 30/Jul/14 03:02 PM
Status Open [ 1 ] Resolved [ 5 ]
Fix Version/s 4.0.2 [ 12235 ]
Resolution Fixed [ 1 ]
Andy Jefferson made changes - 10/Aug/14 12:57 PM
Status Resolved [ 5 ] Closed [ 6 ]