Does the "id" field have public getter and setter methods?    Without those, 
it wouldn't get serialized.

Dan


On Thu September 10 2009 3:19:12 pm Tom Cassimon wrote:
> Hi,
> 
> I'm using the newest version 2.2.3.
> 
> The First problem I noticed is when using @OneToMany relationships
> in entity classes I do not get the Id (on client side).
> 
> Example class:
> 
> === Part of Patient.java ===
> 
>             .
>             .
>             .
> @JoinTable(name = "patient_document", joinColumns = {...@joincolumn(name =
> "patientId")}, inverseJoinColumns = {...@joincolumn(name = "documentId")})
> @OneToMany(fetch=FetchType.LAZY)
> private List<Document> documentList;
>             .
> 
> ============================
> 
> === Part of Document.java ===
> 
> @Entity
> @Table(name = "document")
> public class Document implements Serializable {
> 
>     private static final long serialVersionUID = 1L;
>     @Id
>     @GeneratedValue(strategy = GenerationType.IDENTITY)
>     @Basic(optional = false)
>     @Column(name = "id")
>     private Long id;
>             .
>             .
>             .
> 
> =============================
> 
> When I check on the server side, the id field is filled in
> with the id from the database. But when I check on the client
> side the id is "null". This poses a problem when I submit the
> Patient object back to the server. The First thing is because
> the Id fields are "null" it thinks they are new objects. I update
> this with the following code:
> 
> //Process documents
> if (p.getDocumentList() != null) {
>       for (Document d : p.getDocumentList()) {
>               if (d.getId() == null)
>                       em.persist(d);
>               else
>                       em.merge(d);
>       }
> }
> 
> //Finally process patient
> if (p.getId() == null)
>       em.persist(p);
> else
>       em.merge(p);
> 
> Maybe I shouldn't do it this way, I'm not really sure this is good
>  practice. As a result my database gets flooded with duplicate documents
>  (with blob's in it) because the cleanup of Orphan's doesn't work properly.
>  But in the first place the documents should not be reinserted every time.
> 
> The second problem appears on client side when I want to remove a document
> from a Patient, it always removes the first in the list, because all Id
> fields are "null".
> 
> An other question I have is if it is possible to do lazy loading, I mean
> with this load the Document instance but without the byte[] (blob) loaded,
> I don't know if it is configurable or what is the best practice to
> accomplish this.
> 
> -----Oorspronkelijk bericht-----
> Van: Benson Margulies [mailto:[email protected]]
> Verzonden: donderdag 10 september 2009 20:48
> Aan: [email protected]
> Onderwerp: Re: Problem with primary key in Persisted object list
> 
> I'm afraid that I can't follow the thread here, in part due to all the
>  extra whitespace.
> 
> What exactly is not happening? What version of CXF? How it is configured?
> 

-- 
Daniel Kulp
[email protected]
http://www.dankulp.com/blog

Reply via email to