openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dominik Stadler (JIRA)" <j...@apache.org>
Subject [jira] Created: (OPENJPA-1903) Some queries only work the first time they are executed
Date Mon, 06 Dec 2010 19:07:10 GMT
Some queries only work the first time they are executed
-------------------------------------------------------

                 Key: OPENJPA-1903
                 URL: https://issues.apache.org/jira/browse/OPENJPA-1903
             Project: OpenJPA
          Issue Type: Bug
          Components: query
    Affects Versions: 2.0.1
            Reporter: Dominik Stadler


I have a problem in my application where a query that sometimes returns data and sometimes
not.

I have reduced it to the code as much as I could into an Eclipse project available at http://ubuntuone.com/p/S9n/

This happens with OpenJPA 2.0.1 as well as the daily snapshot from 2010-12-05 and an out-of-process
Derby database.

Basically I have two Entities which both use multiple Ids to produce the Primary Key, "Preis"
contains a foreign key on "Website":

@Entity
@IdClass(MandantAndNameIdentity.class)
public class Website {
    @Id
    private String mandant;
   
    @Id
    private String name;
...
}

@Entity
@IdClass(WebsiteProduktDatumIdentity.class)
public class Preis {
    @Id
    @ManyToOne(cascade = CascadeType.MERGE)
    private Website website;

    @Id
    @Basic
    private String datum;
...
}

I use the following to set up a website and a Preis:

        em.getTransaction().begin();

        Website website = em.merge(new Website("Mandant", "Website"));

        em.merge(new Preis(website, DATUM));
       
        em.getTransaction().commit();

Afterwards, if I run the query as follows:

       TypedQuery<Preis> q = em.createQuery(
                "select m from Preis m " +
                "where m.website.name = :website ", Preis.class);
       q.setParameter("website", website.getName());

this query works all the time, note that it uses website.name for matching, not the full Website-object.

However if I put the query as

        TypedQuery<Preis> q = em.createQuery(
                "select m from Preis m " +
                "where m.website = :website ", Preis.class);
        q.setParameter("website", website);

it only works ONCE and then does not return any results any more!! See testcase DataAccessVerifyTest
for details.

Discussion on the mailinglist seems to indicate that this is a bug. 


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


Mime
View raw message