persistence@glassfish.java.net

RE: Re[2]: Empty references object

From: Gordon Yorke <gordon.yorke_at_oracle.com>
Date: Mon, 29 May 2006 14:21:30 -0400

Hello Dmitry,
   From what you sent I do not see anything that could be going wrong. If the pupil is an existing object then there is no need to call 'em.persist(pupil);' but this shouldn't be causing an error.
  Is it possible for you to provide a simple test case? I would also recommend moving to v2 builds.

--Gordon

-----Original Message-----
From: Dmitry Mozheyko [mailto:mozheyko_d_at_mail.ru]
Sent: Saturday, May 27, 2006 12:15 PM
To: persistence_at_glassfish.dev.java.net
Subject: Re[2]: Empty references object




-----Original Message-----
From: "Gordon Yorke" <gordon.yorke_at_oracle.com>
To: "mozheyko_d_at_mail.ru" <mozheyko_d_at_mail.ru>
Date: Fri, 26 May 2006 09:04:07 -0400
Subject: RE: Empty references object

> Hello Dmitry,
> Can you send the code that performs the update? Can you provide the source for the Grade class as well? How are the PK's structured?

####### Code for update grade of Pupil #############
    ...
    Long gradePK = new Long(<some received value>);
    Grade grade = em.find(Grade.class, gradePK);
    pupil.setGrade(grade);
    em.persist(pupil);
    ...

############ PK of Grade entity is enherited from parent class

...
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class MyEntityParent implements java.io.Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
...

@Entity
public class Grade extends VersionControl {
...


> --Gordon
>
> -----Original Message-----
> From: Dmitry Mozheyko [mailto:mozheyko_d_at_mail.ru]
> Sent: Friday, May 26, 2006 4:09 AM
> To: persistence_at_glassfish.dev.java.net
> Subject: Empty references object
>
>
> I use glassfish b48.
> I need two classes with unidirectional ManyToOne relation:
>
> Pupil -> Grade
>
> ###### Pupil.java ########
> ...
> @Entity
> public class Pupil extends Person {
> ...
> @ManyToOne(targetEntity=Grade.class)
> private Grade grade;
> ...
> }
>
> When i change Pupil-instance grade attribute from 'A' to 'B' grade attribute in pupil instance, database updates successfully, but grade attribute of Pupil instance contents Grade-class instance with all NULL fields, and
> em.createQuery("select o from Grade o where order by o.name").getResultList();
> returns Collection with all Grade objects, but on the 'B-object-place' i see object with all fields = null.
> i.e.
>
> #########################
> id name
> "1" "A"
> "" ""
> "3" "C"
> ##########################
>
> I tried to run on various platforms and glassfish versions, on JavaDB and PostgreSQL database, various CascadeType's - same result.
>
> When i redeploy my application(or restart server;-)) all is ok.
>
> When is my problem?
>