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