You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Albert Lee (JIRA)" <ji...@apache.org> on 2009/12/16 17:57:18 UTC

[jira] Created: (OPENJPA-1435) Multi-1xm relation of same type in entity yields extra null in result collection

Multi-1xm relation of same type in entity yields extra null in result collection
--------------------------------------------------------------------------------

                 Key: OPENJPA-1435
                 URL: https://issues.apache.org/jira/browse/OPENJPA-1435
             Project: OpenJPA
          Issue Type: Bug
          Components: jdbc
    Affects Versions: 2.0.0-M3, 2.0.0-M4, 2.0.0
            Reporter: Albert Lee


When multiple same 1xm relationship is defined in an entity, fetching the entity yields one extra null element in the collection.

@Entity
public class Util1xmLf {
    private int id;
    private int version;
    public Collection<Util1xmRt> uniRightLzy = new HashSet<Util1xmRt>();
    public Collection<Util1xmRt> uniRightEgr = new HashSet<Util1xmRt>();

    @Id public int getId() {        return id;    }
    @Version public int getVersion() {        return version;    }
    @OneToMany// (fetch = FetchType.LAZY)
    public Collection<Util1xmRt> getUniRightLzy() {        return uniRightLzy;    }
    public void setUniRightLzy(Collection<Util1xmRt> uniRightLzy) {        this.uniRightLzy = uniRightLzy;    }
    public void addUniRightLzy(Util1xmRt uniRightLzy) {        getUniRightLzy().add(uniRightLzy);    }
    @OneToMany(fetch = FetchType.EAGER)
    public Collection<Util1xmRt> getUniRightEgr() {        return uniRightEgr;    }
    public void setUniRightEgr(Collection<Util1xmRt> uniRightEgr) {        this.uniRightEgr = uniRightEgr;    }
    public void addUniRightEgr(Util1xmRt uniRightEgr) {        getUniRightEgr().add(uniRightEgr);    }
}

@Entity
public class Util1xmRt {
    private int id;
    private int version;

    @Id public int getId() {        return id;    }
    @Version public int getVersion() {        return version;    }
    public String getLastName() {        return lastName;    }
    public void setLastName(String lastName) {        this.lastName = lastName;    }
}

    public void testLoadedOneToManyCount() {
        EntityManager em = emf.createEntityManager();
        Util1xmLf e1 = em.find(Util1xmLf.class, TestUtil1xm_TestRow_Id);
        // SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 
        //      LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID 
        //      LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = ? 
        //      [params=(int) 100]

        assertNotNull("Found Util1xmLf(id=" + TestUtil1xm_TestRow_Id + ")", e1);
        
        Collection<Util1xmRt> eRs = e1.getUniRightLzy();
        // SELECT t1.id, t1.lastName FROM Util1xmLf_Util1xmRt t0 
        //      INNER JOIN Util1xmRt t1 ON t0.UNIRIGHTLZY_ID = t1.id WHERE t0.UTIL1XMLF_ID = ? 
        //      [params=(int) 100]
        assertNotNull("Util1xmRt uniRightLzy != null", eRs);
        assertEquals("Util1xmRt uniRightLzy.size == 2", eRs.size(), 2);
        
        Collection<Util1xmRt> eEs = e1.getUniRightEgr();
        assertNotNull("Util1xmRt uniRightEgr != null", eEs);
        // Failing test: Getting 3 in eager collection, one null entry
        assertEquals("Util1xmRt uniRightEgr.size == 2", eEs.size(), 2); <<<< Failure returning 3 entries

        em.close();
    }

Here are the SQLs issued
batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 411, (String) loaded lastName1]
batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 412, (String) loaded lastName2]
batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 421, (String) loaded eager lastName3]
batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 422, (String) loaded eager lastName4]
executing prepstmnt 1258900233 INSERT INTO Util1xmLf (id, firstName) VALUES (?, ?) [params=(int) 400, (String) loaded firstName]
batching prepstmnt 1396069174 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHT_ID) VALUES (?, ?) [params=(int) 400, (int) 412]
batching prepstmnt 1396069174 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHT_ID) VALUES (?, ?) [params=(int) 400, (int) 411]
batching prepstmnt 1771465110 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHTEGR_ID) VALUES (?, ?) [params=(int) 400, (int) 422]
batching prepstmnt 1771465110 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHTEGR_ID) VALUES (?, ?) [params=(int) 400, (int) 421]
executing prepstmnt 1429165359 SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = ?  [params=(int) 400]

In DB2 CLI,

db2 => SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = 400

FIRSTNAME                 UTIL1XMLF_ID ID          LASTNAME
------------------------- ------------ ----------- -------------------------
loaded firstName                   400           - -
loaded firstName                   400           - -
loaded firstName                   400         422 loaded eager lastName4
loaded firstName                   400         421 loaded eager lastName3

  4 record(s) selected.

Change the 2nd Left Outer Join to Right Outer Join yields

db2 => SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID RIGHT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = 400

FIRSTNAME                 UTIL1XMLF_ID ID          LASTNAME
------------------------- ------------ ----------- -------------------------
loaded firstName                   400         422 loaded eager lastName4
loaded firstName                   400         421 loaded eager lastName3

  2 record(s) selected.

db2 =>

Noticed the force uniRightLzy fetch used the following SQL, which yielded the correct result:

SELECT t1.id, t1.lastName FROM Util1xmLf_Util1xmRt t0 INNER JOIN Util1xmRt t1 ON t0.UNIRIGHT_ID = t1.id WHERE t0.UTIL1XMLF_ID = ?  [params=(int) 400]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (OPENJPA-1435) Multi-1xm relation of same type in entity yields extra null in result collection

Posted by "Fay Wang (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-1435?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Fay Wang resolved OPENJPA-1435.
-------------------------------

       Resolution: Fixed
    Fix Version/s: 2.0.0

> Multi-1xm relation of same type in entity yields extra null in result collection
> --------------------------------------------------------------------------------
>
>                 Key: OPENJPA-1435
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1435
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jdbc
>    Affects Versions: 2.0.0-M3, 2.0.0-M4, 2.0.0
>            Reporter: Albert Lee
>             Fix For: 2.0.0
>
>         Attachments: OPENJPA-1435.test.patch
>
>
> When multiple same 1xm relationship is defined in an entity, fetching the entity yields one extra null element in the collection.
> @Entity
> public class Util1xmLf {
>     private int id;
>     private int version;
>     public Collection<Util1xmRt> uniRightLzy = new HashSet<Util1xmRt>();
>     public Collection<Util1xmRt> uniRightEgr = new HashSet<Util1xmRt>();
>     @Id public int getId() {        return id;    }
>     @Version public int getVersion() {        return version;    }
>     @OneToMany// (fetch = FetchType.LAZY)
>     public Collection<Util1xmRt> getUniRightLzy() {        return uniRightLzy;    }
>     public void setUniRightLzy(Collection<Util1xmRt> uniRightLzy) {        this.uniRightLzy = uniRightLzy;    }
>     public void addUniRightLzy(Util1xmRt uniRightLzy) {        getUniRightLzy().add(uniRightLzy);    }
>     @OneToMany(fetch = FetchType.EAGER)
>     public Collection<Util1xmRt> getUniRightEgr() {        return uniRightEgr;    }
>     public void setUniRightEgr(Collection<Util1xmRt> uniRightEgr) {        this.uniRightEgr = uniRightEgr;    }
>     public void addUniRightEgr(Util1xmRt uniRightEgr) {        getUniRightEgr().add(uniRightEgr);    }
> }
> @Entity
> public class Util1xmRt {
>     private int id;
>     private int version;
>     @Id public int getId() {        return id;    }
>     @Version public int getVersion() {        return version;    }
>     public String getLastName() {        return lastName;    }
>     public void setLastName(String lastName) {        this.lastName = lastName;    }
> }
>     public void testLoadedOneToManyCount() {
>         EntityManager em = emf.createEntityManager();
>         Util1xmLf e1 = em.find(Util1xmLf.class, TestUtil1xm_TestRow_Id);
>         // SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 
>         //      LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID 
>         //      LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = ? 
>         //      [params=(int) 100]
>         assertNotNull("Found Util1xmLf(id=" + TestUtil1xm_TestRow_Id + ")", e1);
>         
>         Collection<Util1xmRt> eRs = e1.getUniRightLzy();
>         // SELECT t1.id, t1.lastName FROM Util1xmLf_Util1xmRt t0 
>         //      INNER JOIN Util1xmRt t1 ON t0.UNIRIGHTLZY_ID = t1.id WHERE t0.UTIL1XMLF_ID = ? 
>         //      [params=(int) 100]
>         assertNotNull("Util1xmRt uniRightLzy != null", eRs);
>         assertEquals("Util1xmRt uniRightLzy.size == 2", eRs.size(), 2);
>         
>         Collection<Util1xmRt> eEs = e1.getUniRightEgr();
>         assertNotNull("Util1xmRt uniRightEgr != null", eEs);
>         // Failing test: Getting 3 in eager collection, one null entry
>         assertEquals("Util1xmRt uniRightEgr.size == 2", eEs.size(), 2); <<<< Failure returning 3 entries
>         em.close();
>     }
> Here are the SQLs issued
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 411, (String) loaded lastName1]
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 412, (String) loaded lastName2]
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 421, (String) loaded eager lastName3]
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 422, (String) loaded eager lastName4]
> executing prepstmnt 1258900233 INSERT INTO Util1xmLf (id, firstName) VALUES (?, ?) [params=(int) 400, (String) loaded firstName]
> batching prepstmnt 1396069174 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHT_ID) VALUES (?, ?) [params=(int) 400, (int) 412]
> batching prepstmnt 1396069174 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHT_ID) VALUES (?, ?) [params=(int) 400, (int) 411]
> batching prepstmnt 1771465110 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHTEGR_ID) VALUES (?, ?) [params=(int) 400, (int) 422]
> batching prepstmnt 1771465110 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHTEGR_ID) VALUES (?, ?) [params=(int) 400, (int) 421]
> executing prepstmnt 1429165359 SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = ?  [params=(int) 400]
> In DB2 CLI,
> db2 => SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = 400
> FIRSTNAME                 UTIL1XMLF_ID ID          LASTNAME
> ------------------------- ------------ ----------- -------------------------
> loaded firstName                   400           - -
> loaded firstName                   400           - -
> loaded firstName                   400         422 loaded eager lastName4
> loaded firstName                   400         421 loaded eager lastName3
>   4 record(s) selected.
> Change the 2nd Left Outer Join to Right Outer Join yields
> db2 => SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID RIGHT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = 400
> FIRSTNAME                 UTIL1XMLF_ID ID          LASTNAME
> ------------------------- ------------ ----------- -------------------------
> loaded firstName                   400         422 loaded eager lastName4
> loaded firstName                   400         421 loaded eager lastName3
>   2 record(s) selected.
> db2 =>
> Noticed the force uniRightLzy fetch used the following SQL, which yielded the correct result:
> SELECT t1.id, t1.lastName FROM Util1xmLf_Util1xmRt t0 INNER JOIN Util1xmRt t1 ON t0.UNIRIGHT_ID = t1.id WHERE t0.UTIL1XMLF_ID = ?  [params=(int) 400]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (OPENJPA-1435) Multi-1xm relation of same type in entity yields extra null in result collection

Posted by "Fay Wang (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-1435?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Fay Wang closed OPENJPA-1435.
-----------------------------


> Multi-1xm relation of same type in entity yields extra null in result collection
> --------------------------------------------------------------------------------
>
>                 Key: OPENJPA-1435
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1435
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jdbc
>    Affects Versions: 2.0.0-M3, 2.0.0-M4, 2.0.0
>            Reporter: Albert Lee
>             Fix For: 2.0.0
>
>         Attachments: OPENJPA-1435.test.patch
>
>
> When multiple same 1xm relationship is defined in an entity, fetching the entity yields one extra null element in the collection.
> @Entity
> public class Util1xmLf {
>     private int id;
>     private int version;
>     public Collection<Util1xmRt> uniRightLzy = new HashSet<Util1xmRt>();
>     public Collection<Util1xmRt> uniRightEgr = new HashSet<Util1xmRt>();
>     @Id public int getId() {        return id;    }
>     @Version public int getVersion() {        return version;    }
>     @OneToMany// (fetch = FetchType.LAZY)
>     public Collection<Util1xmRt> getUniRightLzy() {        return uniRightLzy;    }
>     public void setUniRightLzy(Collection<Util1xmRt> uniRightLzy) {        this.uniRightLzy = uniRightLzy;    }
>     public void addUniRightLzy(Util1xmRt uniRightLzy) {        getUniRightLzy().add(uniRightLzy);    }
>     @OneToMany(fetch = FetchType.EAGER)
>     public Collection<Util1xmRt> getUniRightEgr() {        return uniRightEgr;    }
>     public void setUniRightEgr(Collection<Util1xmRt> uniRightEgr) {        this.uniRightEgr = uniRightEgr;    }
>     public void addUniRightEgr(Util1xmRt uniRightEgr) {        getUniRightEgr().add(uniRightEgr);    }
> }
> @Entity
> public class Util1xmRt {
>     private int id;
>     private int version;
>     @Id public int getId() {        return id;    }
>     @Version public int getVersion() {        return version;    }
>     public String getLastName() {        return lastName;    }
>     public void setLastName(String lastName) {        this.lastName = lastName;    }
> }
>     public void testLoadedOneToManyCount() {
>         EntityManager em = emf.createEntityManager();
>         Util1xmLf e1 = em.find(Util1xmLf.class, TestUtil1xm_TestRow_Id);
>         // SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 
>         //      LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID 
>         //      LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = ? 
>         //      [params=(int) 100]
>         assertNotNull("Found Util1xmLf(id=" + TestUtil1xm_TestRow_Id + ")", e1);
>         
>         Collection<Util1xmRt> eRs = e1.getUniRightLzy();
>         // SELECT t1.id, t1.lastName FROM Util1xmLf_Util1xmRt t0 
>         //      INNER JOIN Util1xmRt t1 ON t0.UNIRIGHTLZY_ID = t1.id WHERE t0.UTIL1XMLF_ID = ? 
>         //      [params=(int) 100]
>         assertNotNull("Util1xmRt uniRightLzy != null", eRs);
>         assertEquals("Util1xmRt uniRightLzy.size == 2", eRs.size(), 2);
>         
>         Collection<Util1xmRt> eEs = e1.getUniRightEgr();
>         assertNotNull("Util1xmRt uniRightEgr != null", eEs);
>         // Failing test: Getting 3 in eager collection, one null entry
>         assertEquals("Util1xmRt uniRightEgr.size == 2", eEs.size(), 2); <<<< Failure returning 3 entries
>         em.close();
>     }
> Here are the SQLs issued
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 411, (String) loaded lastName1]
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 412, (String) loaded lastName2]
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 421, (String) loaded eager lastName3]
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 422, (String) loaded eager lastName4]
> executing prepstmnt 1258900233 INSERT INTO Util1xmLf (id, firstName) VALUES (?, ?) [params=(int) 400, (String) loaded firstName]
> batching prepstmnt 1396069174 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHT_ID) VALUES (?, ?) [params=(int) 400, (int) 412]
> batching prepstmnt 1396069174 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHT_ID) VALUES (?, ?) [params=(int) 400, (int) 411]
> batching prepstmnt 1771465110 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHTEGR_ID) VALUES (?, ?) [params=(int) 400, (int) 422]
> batching prepstmnt 1771465110 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHTEGR_ID) VALUES (?, ?) [params=(int) 400, (int) 421]
> executing prepstmnt 1429165359 SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = ?  [params=(int) 400]
> In DB2 CLI,
> db2 => SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = 400
> FIRSTNAME                 UTIL1XMLF_ID ID          LASTNAME
> ------------------------- ------------ ----------- -------------------------
> loaded firstName                   400           - -
> loaded firstName                   400           - -
> loaded firstName                   400         422 loaded eager lastName4
> loaded firstName                   400         421 loaded eager lastName3
>   4 record(s) selected.
> Change the 2nd Left Outer Join to Right Outer Join yields
> db2 => SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID RIGHT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = 400
> FIRSTNAME                 UTIL1XMLF_ID ID          LASTNAME
> ------------------------- ------------ ----------- -------------------------
> loaded firstName                   400         422 loaded eager lastName4
> loaded firstName                   400         421 loaded eager lastName3
>   2 record(s) selected.
> db2 =>
> Noticed the force uniRightLzy fetch used the following SQL, which yielded the correct result:
> SELECT t1.id, t1.lastName FROM Util1xmLf_Util1xmRt t0 INNER JOIN Util1xmRt t1 ON t0.UNIRIGHT_ID = t1.id WHERE t0.UTIL1XMLF_ID = ?  [params=(int) 400]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (OPENJPA-1435) Multi-1xm relation of same type in entity yields extra null in result collection

Posted by "Donald Woods (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-1435?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Donald Woods updated OPENJPA-1435:
----------------------------------

    Affects Version/s:     (was: 2.0.0)
        Fix Version/s:     (was: 2.0.0)
                       2.0.0-beta2

> Multi-1xm relation of same type in entity yields extra null in result collection
> --------------------------------------------------------------------------------
>
>                 Key: OPENJPA-1435
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1435
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jdbc
>    Affects Versions: 2.0.0-M3, 2.0.0-beta
>            Reporter: Albert Lee
>             Fix For: 2.0.0-beta2
>
>         Attachments: OPENJPA-1435.test.patch
>
>
> When multiple same 1xm relationship is defined in an entity, fetching the entity yields one extra null element in the collection.
> @Entity
> public class Util1xmLf {
>     private int id;
>     private int version;
>     public Collection<Util1xmRt> uniRightLzy = new HashSet<Util1xmRt>();
>     public Collection<Util1xmRt> uniRightEgr = new HashSet<Util1xmRt>();
>     @Id public int getId() {        return id;    }
>     @Version public int getVersion() {        return version;    }
>     @OneToMany// (fetch = FetchType.LAZY)
>     public Collection<Util1xmRt> getUniRightLzy() {        return uniRightLzy;    }
>     public void setUniRightLzy(Collection<Util1xmRt> uniRightLzy) {        this.uniRightLzy = uniRightLzy;    }
>     public void addUniRightLzy(Util1xmRt uniRightLzy) {        getUniRightLzy().add(uniRightLzy);    }
>     @OneToMany(fetch = FetchType.EAGER)
>     public Collection<Util1xmRt> getUniRightEgr() {        return uniRightEgr;    }
>     public void setUniRightEgr(Collection<Util1xmRt> uniRightEgr) {        this.uniRightEgr = uniRightEgr;    }
>     public void addUniRightEgr(Util1xmRt uniRightEgr) {        getUniRightEgr().add(uniRightEgr);    }
> }
> @Entity
> public class Util1xmRt {
>     private int id;
>     private int version;
>     @Id public int getId() {        return id;    }
>     @Version public int getVersion() {        return version;    }
>     public String getLastName() {        return lastName;    }
>     public void setLastName(String lastName) {        this.lastName = lastName;    }
> }
>     public void testLoadedOneToManyCount() {
>         EntityManager em = emf.createEntityManager();
>         Util1xmLf e1 = em.find(Util1xmLf.class, TestUtil1xm_TestRow_Id);
>         // SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 
>         //      LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID 
>         //      LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = ? 
>         //      [params=(int) 100]
>         assertNotNull("Found Util1xmLf(id=" + TestUtil1xm_TestRow_Id + ")", e1);
>         
>         Collection<Util1xmRt> eRs = e1.getUniRightLzy();
>         // SELECT t1.id, t1.lastName FROM Util1xmLf_Util1xmRt t0 
>         //      INNER JOIN Util1xmRt t1 ON t0.UNIRIGHTLZY_ID = t1.id WHERE t0.UTIL1XMLF_ID = ? 
>         //      [params=(int) 100]
>         assertNotNull("Util1xmRt uniRightLzy != null", eRs);
>         assertEquals("Util1xmRt uniRightLzy.size == 2", eRs.size(), 2);
>         
>         Collection<Util1xmRt> eEs = e1.getUniRightEgr();
>         assertNotNull("Util1xmRt uniRightEgr != null", eEs);
>         // Failing test: Getting 3 in eager collection, one null entry
>         assertEquals("Util1xmRt uniRightEgr.size == 2", eEs.size(), 2); <<<< Failure returning 3 entries
>         em.close();
>     }
> Here are the SQLs issued
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 411, (String) loaded lastName1]
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 412, (String) loaded lastName2]
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 421, (String) loaded eager lastName3]
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 422, (String) loaded eager lastName4]
> executing prepstmnt 1258900233 INSERT INTO Util1xmLf (id, firstName) VALUES (?, ?) [params=(int) 400, (String) loaded firstName]
> batching prepstmnt 1396069174 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHT_ID) VALUES (?, ?) [params=(int) 400, (int) 412]
> batching prepstmnt 1396069174 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHT_ID) VALUES (?, ?) [params=(int) 400, (int) 411]
> batching prepstmnt 1771465110 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHTEGR_ID) VALUES (?, ?) [params=(int) 400, (int) 422]
> batching prepstmnt 1771465110 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHTEGR_ID) VALUES (?, ?) [params=(int) 400, (int) 421]
> executing prepstmnt 1429165359 SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = ?  [params=(int) 400]
> In DB2 CLI,
> db2 => SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = 400
> FIRSTNAME                 UTIL1XMLF_ID ID          LASTNAME
> ------------------------- ------------ ----------- -------------------------
> loaded firstName                   400           - -
> loaded firstName                   400           - -
> loaded firstName                   400         422 loaded eager lastName4
> loaded firstName                   400         421 loaded eager lastName3
>   4 record(s) selected.
> Change the 2nd Left Outer Join to Right Outer Join yields
> db2 => SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID RIGHT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = 400
> FIRSTNAME                 UTIL1XMLF_ID ID          LASTNAME
> ------------------------- ------------ ----------- -------------------------
> loaded firstName                   400         422 loaded eager lastName4
> loaded firstName                   400         421 loaded eager lastName3
>   2 record(s) selected.
> db2 =>
> Noticed the force uniRightLzy fetch used the following SQL, which yielded the correct result:
> SELECT t1.id, t1.lastName FROM Util1xmLf_Util1xmRt t0 INNER JOIN Util1xmRt t1 ON t0.UNIRIGHT_ID = t1.id WHERE t0.UTIL1XMLF_ID = ?  [params=(int) 400]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (OPENJPA-1435) Multi-1xm relation of same type in entity yields extra null in result collection

Posted by "Donald Woods (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-1435?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Donald Woods updated OPENJPA-1435:
----------------------------------

    Affects Version/s:     (was: 2.0.0-beta)
        Fix Version/s:     (was: 2.0.0-beta2)
                       2.0.0-beta

> Multi-1xm relation of same type in entity yields extra null in result collection
> --------------------------------------------------------------------------------
>
>                 Key: OPENJPA-1435
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1435
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jdbc
>    Affects Versions: 2.0.0-M3
>            Reporter: Albert Lee
>             Fix For: 2.0.0-beta
>
>         Attachments: OPENJPA-1435.test.patch
>
>
> When multiple same 1xm relationship is defined in an entity, fetching the entity yields one extra null element in the collection.
> @Entity
> public class Util1xmLf {
>     private int id;
>     private int version;
>     public Collection<Util1xmRt> uniRightLzy = new HashSet<Util1xmRt>();
>     public Collection<Util1xmRt> uniRightEgr = new HashSet<Util1xmRt>();
>     @Id public int getId() {        return id;    }
>     @Version public int getVersion() {        return version;    }
>     @OneToMany// (fetch = FetchType.LAZY)
>     public Collection<Util1xmRt> getUniRightLzy() {        return uniRightLzy;    }
>     public void setUniRightLzy(Collection<Util1xmRt> uniRightLzy) {        this.uniRightLzy = uniRightLzy;    }
>     public void addUniRightLzy(Util1xmRt uniRightLzy) {        getUniRightLzy().add(uniRightLzy);    }
>     @OneToMany(fetch = FetchType.EAGER)
>     public Collection<Util1xmRt> getUniRightEgr() {        return uniRightEgr;    }
>     public void setUniRightEgr(Collection<Util1xmRt> uniRightEgr) {        this.uniRightEgr = uniRightEgr;    }
>     public void addUniRightEgr(Util1xmRt uniRightEgr) {        getUniRightEgr().add(uniRightEgr);    }
> }
> @Entity
> public class Util1xmRt {
>     private int id;
>     private int version;
>     @Id public int getId() {        return id;    }
>     @Version public int getVersion() {        return version;    }
>     public String getLastName() {        return lastName;    }
>     public void setLastName(String lastName) {        this.lastName = lastName;    }
> }
>     public void testLoadedOneToManyCount() {
>         EntityManager em = emf.createEntityManager();
>         Util1xmLf e1 = em.find(Util1xmLf.class, TestUtil1xm_TestRow_Id);
>         // SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 
>         //      LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID 
>         //      LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = ? 
>         //      [params=(int) 100]
>         assertNotNull("Found Util1xmLf(id=" + TestUtil1xm_TestRow_Id + ")", e1);
>         
>         Collection<Util1xmRt> eRs = e1.getUniRightLzy();
>         // SELECT t1.id, t1.lastName FROM Util1xmLf_Util1xmRt t0 
>         //      INNER JOIN Util1xmRt t1 ON t0.UNIRIGHTLZY_ID = t1.id WHERE t0.UTIL1XMLF_ID = ? 
>         //      [params=(int) 100]
>         assertNotNull("Util1xmRt uniRightLzy != null", eRs);
>         assertEquals("Util1xmRt uniRightLzy.size == 2", eRs.size(), 2);
>         
>         Collection<Util1xmRt> eEs = e1.getUniRightEgr();
>         assertNotNull("Util1xmRt uniRightEgr != null", eEs);
>         // Failing test: Getting 3 in eager collection, one null entry
>         assertEquals("Util1xmRt uniRightEgr.size == 2", eEs.size(), 2); <<<< Failure returning 3 entries
>         em.close();
>     }
> Here are the SQLs issued
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 411, (String) loaded lastName1]
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 412, (String) loaded lastName2]
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 421, (String) loaded eager lastName3]
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 422, (String) loaded eager lastName4]
> executing prepstmnt 1258900233 INSERT INTO Util1xmLf (id, firstName) VALUES (?, ?) [params=(int) 400, (String) loaded firstName]
> batching prepstmnt 1396069174 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHT_ID) VALUES (?, ?) [params=(int) 400, (int) 412]
> batching prepstmnt 1396069174 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHT_ID) VALUES (?, ?) [params=(int) 400, (int) 411]
> batching prepstmnt 1771465110 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHTEGR_ID) VALUES (?, ?) [params=(int) 400, (int) 422]
> batching prepstmnt 1771465110 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHTEGR_ID) VALUES (?, ?) [params=(int) 400, (int) 421]
> executing prepstmnt 1429165359 SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = ?  [params=(int) 400]
> In DB2 CLI,
> db2 => SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = 400
> FIRSTNAME                 UTIL1XMLF_ID ID          LASTNAME
> ------------------------- ------------ ----------- -------------------------
> loaded firstName                   400           - -
> loaded firstName                   400           - -
> loaded firstName                   400         422 loaded eager lastName4
> loaded firstName                   400         421 loaded eager lastName3
>   4 record(s) selected.
> Change the 2nd Left Outer Join to Right Outer Join yields
> db2 => SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID RIGHT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = 400
> FIRSTNAME                 UTIL1XMLF_ID ID          LASTNAME
> ------------------------- ------------ ----------- -------------------------
> loaded firstName                   400         422 loaded eager lastName4
> loaded firstName                   400         421 loaded eager lastName3
>   2 record(s) selected.
> db2 =>
> Noticed the force uniRightLzy fetch used the following SQL, which yielded the correct result:
> SELECT t1.id, t1.lastName FROM Util1xmLf_Util1xmRt t0 INNER JOIN Util1xmRt t1 ON t0.UNIRIGHT_ID = t1.id WHERE t0.UTIL1XMLF_ID = ?  [params=(int) 400]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (OPENJPA-1435) Multi-1xm relation of same type in entity yields extra null in result collection

Posted by "Albert Lee (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-1435?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Albert Lee updated OPENJPA-1435:
--------------------------------

    Attachment: OPENJPA-1435.test.patch

> Multi-1xm relation of same type in entity yields extra null in result collection
> --------------------------------------------------------------------------------
>
>                 Key: OPENJPA-1435
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1435
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jdbc
>    Affects Versions: 2.0.0-M3, 2.0.0-M4, 2.0.0
>            Reporter: Albert Lee
>         Attachments: OPENJPA-1435.test.patch
>
>
> When multiple same 1xm relationship is defined in an entity, fetching the entity yields one extra null element in the collection.
> @Entity
> public class Util1xmLf {
>     private int id;
>     private int version;
>     public Collection<Util1xmRt> uniRightLzy = new HashSet<Util1xmRt>();
>     public Collection<Util1xmRt> uniRightEgr = new HashSet<Util1xmRt>();
>     @Id public int getId() {        return id;    }
>     @Version public int getVersion() {        return version;    }
>     @OneToMany// (fetch = FetchType.LAZY)
>     public Collection<Util1xmRt> getUniRightLzy() {        return uniRightLzy;    }
>     public void setUniRightLzy(Collection<Util1xmRt> uniRightLzy) {        this.uniRightLzy = uniRightLzy;    }
>     public void addUniRightLzy(Util1xmRt uniRightLzy) {        getUniRightLzy().add(uniRightLzy);    }
>     @OneToMany(fetch = FetchType.EAGER)
>     public Collection<Util1xmRt> getUniRightEgr() {        return uniRightEgr;    }
>     public void setUniRightEgr(Collection<Util1xmRt> uniRightEgr) {        this.uniRightEgr = uniRightEgr;    }
>     public void addUniRightEgr(Util1xmRt uniRightEgr) {        getUniRightEgr().add(uniRightEgr);    }
> }
> @Entity
> public class Util1xmRt {
>     private int id;
>     private int version;
>     @Id public int getId() {        return id;    }
>     @Version public int getVersion() {        return version;    }
>     public String getLastName() {        return lastName;    }
>     public void setLastName(String lastName) {        this.lastName = lastName;    }
> }
>     public void testLoadedOneToManyCount() {
>         EntityManager em = emf.createEntityManager();
>         Util1xmLf e1 = em.find(Util1xmLf.class, TestUtil1xm_TestRow_Id);
>         // SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 
>         //      LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID 
>         //      LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = ? 
>         //      [params=(int) 100]
>         assertNotNull("Found Util1xmLf(id=" + TestUtil1xm_TestRow_Id + ")", e1);
>         
>         Collection<Util1xmRt> eRs = e1.getUniRightLzy();
>         // SELECT t1.id, t1.lastName FROM Util1xmLf_Util1xmRt t0 
>         //      INNER JOIN Util1xmRt t1 ON t0.UNIRIGHTLZY_ID = t1.id WHERE t0.UTIL1XMLF_ID = ? 
>         //      [params=(int) 100]
>         assertNotNull("Util1xmRt uniRightLzy != null", eRs);
>         assertEquals("Util1xmRt uniRightLzy.size == 2", eRs.size(), 2);
>         
>         Collection<Util1xmRt> eEs = e1.getUniRightEgr();
>         assertNotNull("Util1xmRt uniRightEgr != null", eEs);
>         // Failing test: Getting 3 in eager collection, one null entry
>         assertEquals("Util1xmRt uniRightEgr.size == 2", eEs.size(), 2); <<<< Failure returning 3 entries
>         em.close();
>     }
> Here are the SQLs issued
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 411, (String) loaded lastName1]
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 412, (String) loaded lastName2]
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 421, (String) loaded eager lastName3]
> batching prepstmnt 800337844 INSERT INTO Util1xmRt (id, lastName) VALUES (?, ?) [params=(int) 422, (String) loaded eager lastName4]
> executing prepstmnt 1258900233 INSERT INTO Util1xmLf (id, firstName) VALUES (?, ?) [params=(int) 400, (String) loaded firstName]
> batching prepstmnt 1396069174 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHT_ID) VALUES (?, ?) [params=(int) 400, (int) 412]
> batching prepstmnt 1396069174 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHT_ID) VALUES (?, ?) [params=(int) 400, (int) 411]
> batching prepstmnt 1771465110 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHTEGR_ID) VALUES (?, ?) [params=(int) 400, (int) 422]
> batching prepstmnt 1771465110 INSERT INTO Util1xmLf_Util1xmRt (UTIL1XMLF_ID, UNIRIGHTEGR_ID) VALUES (?, ?) [params=(int) 400, (int) 421]
> executing prepstmnt 1429165359 SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = ?  [params=(int) 400]
> In DB2 CLI,
> db2 => SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = 400
> FIRSTNAME                 UTIL1XMLF_ID ID          LASTNAME
> ------------------------- ------------ ----------- -------------------------
> loaded firstName                   400           - -
> loaded firstName                   400           - -
> loaded firstName                   400         422 loaded eager lastName4
> loaded firstName                   400         421 loaded eager lastName3
>   4 record(s) selected.
> Change the 2nd Left Outer Join to Right Outer Join yields
> db2 => SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0 LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID RIGHT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = 400
> FIRSTNAME                 UTIL1XMLF_ID ID          LASTNAME
> ------------------------- ------------ ----------- -------------------------
> loaded firstName                   400         422 loaded eager lastName4
> loaded firstName                   400         421 loaded eager lastName3
>   2 record(s) selected.
> db2 =>
> Noticed the force uniRightLzy fetch used the following SQL, which yielded the correct result:
> SELECT t1.id, t1.lastName FROM Util1xmLf_Util1xmRt t0 INNER JOIN Util1xmRt t1 ON t0.UNIRIGHT_ID = t1.id WHERE t0.UTIL1XMLF_ID = ?  [params=(int) 400]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.