openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Fay Wang (JIRA)" <j...@apache.org>
Subject [jira] Commented: (OPENJPA-707) Recursively related entities not loaded
Date Thu, 11 Sep 2008 19:35:44 GMT

    [ https://issues.apache.org/jira/browse/OPENJPA-707?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12630324#action_12630324
] 

Fay Wang commented on OPENJPA-707:
----------------------------------

Hi Antonio,
   I ran the test case outside Eclipse using your compile.sh and run.sh. I did see the problem
you described. After some investigation, it is found that you did not call PCEnhancer to enhance
your entity. You should add the following statement in your compile.sh:

      java org.apache.openjpa.enhance.PCEnhancer -p persistence.xml#nocarga

The purpose of the enhancer is to enhance the entity class file by adding the bytecode that
openjpa needs for proper runtime operation. After this step, the test case works just fine.
 Please let me know if you still have problem. 


> Recursively related entities not loaded
> ---------------------------------------
>
>                 Key: OPENJPA-707
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-707
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 1.1.0
>         Environment: * [OpenJPA 1.1.0]
> * [derby 10.4.1.3]
> * [java hotspot 1.6.0_06-b02]
> * [ubuntu 8.04.1 2.6.24-19-generic] 
>            Reporter: Antonio Sánchez
>         Attachments: test.jar, testcase.tar.gz
>
>
> OpenJPA is failing to load data from the database in recursive
> many-to-one relationships (and possibly other types of relationships).
> CASE (Steps 1 to 4 follow) ---------->
> STEP 1.- I'm using a recursive table (most probably the same case
> applies for non-recursive relationships):
> create table "SA"."RECURSIVA" (
>    PK int primary key not null,
>    DATO varchar(10),
>    PADRE int references RECURSIVA
> );
> INSERT INTO "SA"."RECURSIVA" (PK,DATO,PADRE) VALUES (0,'Raiz',null);
> INSERT INTO "SA"."RECURSIVA" (PK,DATO,PADRE) VALUES (1,'n1',0);
> INSERT INTO "SA"."RECURSIVA" (PK,DATO,PADRE) VALUES (2,'n2',1);
> INSERT INTO "SA"."RECURSIVA" (PK,DATO,PADRE) VALUES (3,'n3',2);
> INSERT INTO "SA"."RECURSIVA" (PK,DATO,PADRE) VALUES (4,'n4',3);
> INSERT INTO "SA"."RECURSIVA" (PK,DATO,PADRE) VALUES (5,'n5',4);
> INSERT INTO "SA"."RECURSIVA" (PK,DATO,PADRE) VALUES (6,'n6',5);
> INSERT INTO "SA"."RECURSIVA" (PK,DATO,PADRE) VALUES (7,'n7',6);
> STEP 2.- This is the entity (the recursive many-to-one relationship is
> supposed to be eagerly fetched, according to the spec.):
> @Entity
> @Table(name = "RECURSIVA")
> public class Recursiva implements Serializable {
>     @Id
>     @Column(name = "PK", nullable = false)
>     private Integer pk;
>     @Column(name = "DATO")
>     private String dato;
>     @OneToMany(mappedBy = "padre")
>     private Collection<Recursiva> recursivaCollection;
>     @JoinColumn(name = "PADRE", referencedColumnName = "PK")
>     @ManyToOne
>     private Recursiva padre;
>     ....
> STEP 3.- This is the data retrieval code.
>         EntityManagerFactory emf =
> Persistence.createEntityManagerFactory("mijpa");;
>         EntityManager em = emf.createEntityManager();
>         Recursiva rc = null;
>        
>         rc = em.find(Recursiva.class, 7);      
>        
>         while (rc != null) {
>             System.out.println(rc.getDato());
>             rc = rc.getPadre();
>         }
>        
>         em.close();
>         emf.close();
> STEP 4.- Results:
> n7
> n6
> I would have expected to be printed the whole hierarchy up to the root,
> i.e.: n7 n6 n5 n4 n3 n2 n1 Raiz
> NOTE: TopLink Essentials does it as expected.

-- 
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