cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Savva Kolbachev (JIRA)" <>
Subject [jira] [Created] (CAY-2097) NullPointerException while updating relationships for entities with vertical inheritance
Date Fri, 05 Aug 2016 11:29:20 GMT
Savva Kolbachev created CAY-2097:

             Summary: NullPointerException while updating relationships for entities with
vertical inheritance
                 Key: CAY-2097
             Project: Cayenne
          Issue Type: Bug
    Affects Versions: 4.0.M3
            Reporter: Savva Kolbachev
            Assignee: Savva Kolbachev
             Fix For: 4.0.M4

Forwarded from mail list:
I have a class Company with a one-to-many relationship to other Companies (parentCompany <-
subCompanies). I’m able to set a Company’s parent when creating one, but upon update I’m
getting a NullPointerException in DefaultQuotingStrategy.quotedName because it’s been sent
a null attribute. Company extends the abstract class Entity; on the DB side Entity and Company
have a one-to-one relationship, and Entity has a parentEntity reference (which is modeled
as parentCompany). The obj-relationship parentCompany is set up with the target Company and
path parentEntity.

The null attribute is being added in org.apache.cayenne.access.DataDomainUpdateBucket.updatedAttributes.
The method is called first with the dbEntity Entity and the an updatedSnapshot containing
parentEntity, which is what I would expect. However, after this updatedAttributes is called
with Company and an updatedSnapshot containing parentEntity, so the following line


will return a null attribute when trying to get the name “parentEntity” off Company’s
attributes; that attribute only exists on Entity. I’d appreciate any help on preventing
it from trying to add invalid attributes.

Here’s the stack trace:

        at org.apache.cayenne.dba.DefaultQuotingStrategy.quotedName(
        at org.apache.cayenne.access.translator.batch.UpdateBatchTranslator.createSql(
        at org.apache.cayenne.access.translator.batch.DefaultBatchTranslator.ensureTranslated(
        at org.apache.cayenne.access.translator.batch.DefaultBatchTranslator.getSql(
        at org.apache.cayenne.access.jdbc.BatchAction.runAsBatch(
        at org.apache.cayenne.access.jdbc.BatchAction.performAction(
        at org.apache.cayenne.access.DataNodeQueryAction.runQuery(
        at org.apache.cayenne.access.DataNode.performQueries(
        at org.apache.cayenne.access.DataDomainFlushAction.runQueries(
        at org.apache.cayenne.access.DataDomainFlushAction.flush(
        at org.apache.cayenne.access.DataDomain.onSyncFlush(
        at org.apache.cayenne.access.DataDomain$2.transform(
        at org.apache.cayenne.access.DataDomain.runInTransaction(
        at org.apache.cayenne.access.DataDomain.onSyncNoFilters(
        at org.apache.cayenne.access.DataDomain$DataDomainSyncFilterChain.onSync(
        at org.apache.cayenne.access.DataDomain.onSync(
        at org.apache.cayenne.access.DataContext.flushToParent(
        at org.apache.cayenne.access.DataContext.commitChanges(

This message was sent by Atlassian JIRA

View raw message