openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tobias Trelle <tobias.tre...@codecentric.de>
Subject Re: Unnecessary Join on bidirectional OneToOne relation
Date Tue, 18 Oct 2011 08:02:15 GMT
Dear Rick,


Rick Curtis wrote:
> 
> How are you mapping this relationship? Can you post code snippets from
> both
> sides of the relationship?
> 

Here's the full code of my minial example:

@Entity
public class A {

    @Id
    int id;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "id")
    private B b;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public B getB() {
        return b;
    }

    public void setB(B b) {
        this.b = b;
    }

}

@Entity
public class B {

    @Id
    private int id;

    @OneToOne(mappedBy = "b")
    private A a;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public A getA() {
        return a;
    }

    public void setA(A a) {
        this.a = a;
    }

}

My test code looks like this:

        A a;
        B b;
        EntityManager em = getEntityManager();
        EntityTransaction tx = em.getTransaction();

        a = new A();
        a.setId(1);

        b = new B();
        b.setId(1);

        a.setB(b);
        b.setA(a);

        tx.begin();
        em.persist(a);
        tx.commit();

        em.clear();
        a = em.find(A.class, 1);

which produces the following SQL select statement:

TRACE 09:59:19 - <t 13741320, conn 11915355> executing prepstmnt 10188622 
SELECT t1.id, t2.id 
    FROM A t0 INNER JOIN B t1 ON t0.id = t1.id LEFT OUTER JOIN A t2 ON t1.id
= t2.id 
    WHERE t0.id = ? 
[params=(int) 1]
TRACE 09:59:19 - <t 13741320, conn 11915355> [15 ms] spent

TIA,
Tobias

--
View this message in context: http://openjpa.208410.n2.nabble.com/Unnecessary-Join-on-bidirectional-OneToOne-relation-tp6900378p6903642.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.

Mime
View raw message