persistence@glassfish.java.net

Re: question on entity relation. - unidirectional

From: Gordon Yorke <gordon.yorke_at_oracle.com>
Date: Wed, 12 Mar 2008 08:38:05 -0400

Because you have mapped stockinforent as embedded within iteamdetailsent
you will need to set stockinforent into iteamdetailsent through the
@Embedded mapped attribute. I am surprised that you were able to call
em.persist() on stockinforent without getting an error.
--Gordon

Eve Pokua wrote:
> Hello Gordon,
>
> This is what I think may work:
>
>
> *public void createIteamdetails(String itmid,String itmname, String
> description, String colour, long price, String itemsize, long
> discount, String departid, String suppid, String delivid){*
> * Departmentent departmentent =new Departmentent();
> departmentent=em.find(Departmentent.class, departid);
> Suppliercompanyent suppliercompanyent =new
> Suppliercompanyent();
> suppliercompanyent=em.find(Suppliercompanyent.class,
> suppid);
> DeliveryCompanyent deliveryCompanyent =new
> DeliveryCompanyent();
> deliveryCompanyent=em.find(DeliveryCompanyent.class,
> delivid);
> Stockinforent stockinforent=new Stockinforent();*
> * String deliverydate="23/02/07";
> long stockquanity=56;
>
>
> Iteamdetailsent iteamdetailsent=new
> Iteamdetailsent();*
> * iteamdetailsent.setItmid(itmid);
> iteamdetailsent.setItmname(itmname);
> iteamdetailsent.setDescription(description);
> iteamdetailsent.setItmid(colour);
> iteamdetailsent.setPrice(price);
> iteamdetailsent.setItemsize(itemsize);
> iteamdetailsent.setDiscount(discount);
> iteamdetailsent.setDepartmentent(departmentent);
>
> stockinforent.setDeliverydate(deliverydate);
> stockinforent.setStockquanity(stockquanity);
>
> stockinforent.setSuppliercompanyent(suppliercompanyent);
>
> stockinforent.setDeliveryCompanyent(deliveryCompanyent);
>
>
> em.persist(iteamdetailsent);
> em.persist(stockinforent);*
> **
> *}*
>
> So how do I persist stockinforent in iteamdetailsent so the data ends
> in the same
> record?
>
> Sorry I hope this helps
>
> Thanks
>
> eve
>
>
>
> ------------------------------------------------------------------------
> From: gordon.yorke_at_oracle.com
> To: persistence_at_glassfish.dev.java.net
> CC: ejb_at_glassfish.dev.java.net
> Date: Tue, 11 Mar 2008 10:15:06 -0400
> Subject: RE: question on entity relation. - unidirectional
>
> Hello Eve,
> I am not sure what you are asking with this email. What query
> are you talking about? The code attached is not setting
> stockinforent into iteamdetailsent and it is not persisting the
> iteamdetailsent entity either did you leave that part out? Can
> you explain what you want to have happen and what is happening now?
> --Gordon
>
> -----Original Message-----
> *From:* Eve Pokua [mailto:gorgeous65_at_msn.com]
> *Sent:* Tuesday, March 11, 2008 9:34 AM
> *To:* persistence_at_glassfish.dev.java.net
> *Cc:* ejb_at_glassfish.dev.java.net
> *Subject:* RE: question on entity relation. - unidirectional
>
> Hello Gorgdon, everyone,
>
> Because Stockinforent is embedded within Iteamdetailsent both
> classes will be written to the same row in the same query.
> --Gordon
>
> Yes, I understood that and this is emphasised when I created
> the table.
> It is the query I am worried about. This is what I have done
> so far:
>
> * Departmentent departmentent =new
> Departmentent();
> departmentent=em.find(Departmentent.class,
> departid);
> Suppliercompanyent suppliercompanyent =new
> Suppliercompanyent();
>
> suppliercompanyent=em.find(Suppliercompanyent.class, suppid);
> DeliveryCompanyent deliveryCompanyent =new
> DeliveryCompanyent();
>
> deliveryCompanyent=em.find(DeliveryCompanyent.class, delivid);
> Stockinforent stockinforent;
>
> String deliverydate="23/02/07"
> long stockquanity=56;
>
> Iteamdetailsent iteamdetailsent=new
> Iteamdetailsent(itmid,itmname, description, colour, price,
> itemsize, discount, departmentent);
>
> stockinforent=new(deliverydate,stockquanity,
> suppliercompanyent, deliveryCompanyent);*
>
> Or I may replace the above with the set methods.
>
> Sorry, if I didn't make myself clear with my previous email
>
> Thanking you
>
> eve
>
>
> ------------------------------------------------------------------------
> Date: Tue, 11 Mar 2008 08:53:49 -0400
> From: gordon.yorke_at_oracle.com
> To: persistence_at_glassfish.dev.java.net
> CC: ejb_at_glassfish.dev.java.net
> Subject: Re: question on entity relation. - unidirectional
>
> Because Stockinforent is embedded within Iteamdetailsent
> both classes will be written to the same row in the same
> query.
> --Gordon
>
> Eve Pokua wrote:
>
> Hello everyone,
>
> Regarding this Embeddable class:
>
> @Embeddable
> *public class Stockinforent implements
> java.io.Serializable
> { *
> * @Column(name="DELIVERYDATE",
> nullable=false, length=35)
> private String deliverydate;
> @Column(name="STOCKQUAN",
> nullable=true, length=35)
> private Long stockquanity;
>
>
>
> @JoinColumn(name="sid")
> @ManyToOne
> private
> Suppliercompanyent suppliercompanyent;
>
> @JoinColumn(name="delivid")
> @ManyToOne
> private
> DeliveryCompanyent deliveryCompanyent;*
>
> }
>
> The* Stockinforent *is an embeddable class inside*
> Iteamdetailsent *and it is also in relation to other
> entities as detailed above.
> To record a new record into the *Iteamdetailsent
> *table of the DB*, *I must have all and especially the
> ID of all relation entities.
> So how do I make sure both the new data for
> *Iteamdetailsent* and *Stockinforent *is entered into
> the DB at the same time( the data would
> be for the same record).
>
> Im a little stack in here so any suggestion would be
> apprecaited.
>
> Thanks
>
> eve
>
> ------------------------------------------------------------------------
> From: gorgeous65_at_msn.com <mailto:gorgeous65_at_msn.com>
> To: persistence_at_glassfish.dev.java.net
> <mailto:persistence_at_glassfish.dev.java.net>
> CC: ejb_at_glassfish.dev.java.net
> <mailto:ejb_at_glassfish.dev.java.net>
> Date: Wed, 20 Feb 2008 21:55:57 +0000
> Subject: RE: question on entity relation. -
> unidirectional
>
> Hello everyone,
>
> James/Gordon,
>
> Thank you all so much for your help.
>
> So for anybody learning just like me, I used
> Embeddable for Stockinforent which was
> embedded within Iteamdetailsent with
> AttributeOverrides as:
> **
> @Embedded
> @AttributeOverrides({
> @AttributeOverride(name="sid" ,
> column=_at_Column(name="ssid
> <mailto:column=_at_Column%28name=%22ssid>")),
> @AttributeOverride(name="delivid" ,
> column=_at_Column(name="sdelivid
> <mailto:column=_at_Column%28name=%22sdelivid>"))
> })
>
> And everything is working good.
>
> Thanks
>
> eve
>
> ------------------------------------------------------------------------
> From: gorgeous65_at_msn.com
> <mailto:gorgeous65_at_msn.com>
> To: persistence_at_glassfish.dev.java.net
> <mailto:persistence_at_glassfish.dev.java.net>
> CC: ejb_at_glassfish.dev.java.net
> <mailto:ejb_at_glassfish.dev.java.net>
> Date: Wed, 20 Feb 2008 16:38:14 +0000
> Subject: RE: question on entity relation. -
> unidirectional
>
> Hello James/Gordon,
>
> First of all, I would like to say thank you so
> much for your replies.
>
> <
> Could you include your current mapping
> annotations or XML for the two
> classes.
> >
>
>
> With regards to *Stockinforent,* this is how I
> relate to the other entities:
>
>
>
> *public class Stockinforent implements
> java.io.Serializable
> {
>
> ......*
> * @Id
> @Column(name = "ITMID",
> insertable=false, updatable=false)
> private String itmid;*
> * @OneToOne()
> @JoinColumn(name="ITMID")
> private Iteamdetailsent iteamdetailsent;*
>
> * @JoinColumn(name="sid")
> @ManyToOne
> private Suppliercompanyent
> suppliercompanyent;
> @JoinColumn(name="delivid")
> @ManyToOne
> private DeliveryCompanyent
> deliveryCompanyent;
> ......*
>
> * public Iteamdetailsent getIteamdetailsent(){
> return this.iteamdetailsent;}
>
> public void
> setIteamdetailsent(Iteamdetailsent
> iteamdetailsent){
>
> this.iteamdetailsent=iteamdetailsent;
> this.itmid =
> iteamdetailsent.getItmid();} *
>
> * public Suppliercompanyent
> getSuppliercompanyent(){
> return this.suppliercompanyent;}
>
> public void
> setSuppliercompanyent(Suppliercompanyent
> suppliercompanyent){
> this.suppliercompanyent=suppliercompanyent;}
>
> public DeliveryCompanyent
> getDeliveryCompanyent(){
> return this.deliveryCompanyent;}
>
> public void
> setDeliveryCompanyent(DeliveryCompanyent
> deliveryCompanyent){
>
> this.deliveryCompanyent=deliveryCompanyent;}*
>
>
>
> *.......
>
> ...
> }*
>
> How can I override entities as the get and set
> methods are of entity type
> If I understand what you mean:
>
>
> @Embedded
> @AttributeOverrides({
> * @ManyToOne
> * @AttributeOverride(*name="sid" , column=_at_JoinColumn("ssid <mailto:column=_at_JoinColumn%28%22ssid>")),*
> * *_at_AttributeOverride(*name="delivid" , **column=_at_JoinColumn("sdelivid* <mailto:column=_at_JoinColumn%28%22ssid>*"))*
>
> *})*
>
> :~)
>
>
>
> Or may be not?
>
> Thanks
>
> eve
>
>
>
>
>
> ------------------------------------------------------------------------
> From: gordon.yorke_at_oracle.com
> <mailto:gordon.yorke_at_oracle.com>
> To: persistence_at_glassfish.dev.java.net
> <mailto:persistence_at_glassfish.dev.java.net>
> Date: Wed, 20 Feb 2008 11:00:28 -0500
> Subject: RE: question on entity relation.
> - unidirectional
>
>
> With regard to the exception, have you
> added the attribute overrides to the
> Entities that share the Stockinforent?
> --Gordon
>
> -----Original Message-----
> *From:* Eve Pokua
> [mailto:gorgeous65_at_msn.com]
> *Sent:* Wednesday, February 20, 2008
> 10:42 AM
> *To:*
> persistence_at_glassfish.dev.java.net
> <mailto:persistence_at_glassfish.dev.java.net>
> *Cc:* ejb glassfish
> *Subject:* RE: question on entity
> relation. - unidirectional
>
> Hello,
>
> You are right and I've thought of that
> before. But all of my queries have a
> lot to
> do with Iteamdetailsent. And I have
> come so far with this project.
> Really, Stockinforent is actually part
> of Iteamdetailsent. I have divided it
> to give me a better control over the
> system. But may be
> I was wrong.
>
> eve
>
>
>
>
> ------------------------------------------------------------------------
> Date: Wed, 20 Feb 2008 08:51:21 -0500
> From: gordon.yorke_at_oracle.com
> <mailto:gordon.yorke_at_oracle.com>
> To:
> persistence_at_glassfish.dev.java.net
> <mailto:persistence_at_glassfish.dev.java.net>
> CC: ejb_at_glassfish.dev.java.net
> <mailto:ejb_at_glassfish.dev.java.net>
> Subject: Re: question on entity
> relation. - unidirectional
>
> Are you using Attribute overrides
> for the other class
> Suppliercompanyent?
>
> To solve your initial problem you
> could always query on the
> "Stockinforent" instead of
> "Iteamdetailsent" and use the
> OneToOne reference to display the
> "Iteamdetailsent" details.
>
> -- Gordon
>
> Eve Pokua wrote:
>
>
> Hello everyone,
>
> I tried to used embeddable
> class as below but then got
> some error:
>
> *Descriptor Exceptions:
> ---------------------------------------------------------
> Exception [TOPLINK-93] (Oracle
> TopLink Essentials - 2.0
> (Build b58g-fcs
> (09/07/2007))):
> oracle.toplink.essentials.exceptions.DescriptorException
> Exception Description: The
> table [ITEMS] is not present
> in this descriptor.
> Descriptor:
> RelationalDescriptor(stockInformation.Suppliercompanyent
> --> [DatabaseTable(SUPPLIERS)])
> Runtime Exceptions:
> ---------------------------------------------------------
> Deployment error:
> The module has not been deployed.
> See the server log for details.
>
> *
> The embeddable class is also
> in relation to another class.
> I'm kind of running out
> of ideas and would appreciate
> any suggestions. Unless I
> have to stick to bidirectional.
>
> Thanks
>
> eve
>
> ------------------------------------------------------------------------
> From: gorgeous65_at_msn.com
> <mailto:gorgeous65_at_msn.com>
> To:
> ejb_at_glassfish.dev.java.net
> <mailto:ejb_at_glassfish.dev.java.net>
> CC:
> persistence_at_glassfish.dev.java.net
> <mailto:persistence_at_glassfish.dev.java.net>
> Date: Mon, 18 Feb 2008
> 15:36:15 +0000
> Subject: RE: question on
> entity relation. -
> unidirectional
>
>
> Hello everyone,
>
> I was doing a research on
> this and came across the
> following about embeddable
> class:
>
> http://www.theserverside.com/tt/articles/article.tss?l=MigratingJDBC
>
> Check the entity Accounts
> and ContactInformation:
>
>
> *_at_Entity
> @Table(name = "ACT")
> public class Account implements java.io.Serializable {
>
> protected String userId;
> protected ContactInformation info;
>
> public Account () {}
>
> public Account (String userId, ContactInformation info) {
> this.userId = userId;
> this.info = info;
> }
>
> @Id
> @Column(name="USERID")
> public String getUserId() {
> return userId;
> }
> @Embedded
> public ContactInformation getContactInformation() {
> return info;
> }
>
>
>
> ...
> ...
>
> }*
>
> *_at_Embeddable
> @Table(name = "ACT")
>
> public class ContactInformation implements java.io.Serializable {
>
> protected String telephone;
> protected String email;
> protected String familyName;
> protected String givenName;
>
> public ContactInformation() {}
>
> public ContactInformation(String familyName,
> String givenName,
> String telephone,
> String email){
>
> this.givenName = givenName;
> this.familyName = familyName;
> this.email = email;
> this.telephone = telephone;
> }
>
> @Column(name="FIRSTNAME")
> public String getGivenName(){
> return givenName;
> }
>
> ...
> ...
>
>
> }
> *
>
>
> The above code was copied
> from:
>
> http://www.theserverside.com/tt/articles/article.tss?l=MigratingJDBC
>
> Could this be the answer
> to my problems. Instead,
> have two entities and then
> one table. Embedded
> one entity in another, so
> there is no worries of
> relations. Then in a case
> liken this, I would
> display data using
> a code as below:
>
> acount.contactInformation.telephone;
> acount.contactInformation.email;
> acount.contactInformation.familyName;
> acount.contactInformation.givenName;
>
> I'm I on the right track?
>
> Thanks
>
> eve
>
>
>
>
>
> ------------------------------------------------------------------------
> From:
> gorgeous65_at_msn.com
> <mailto:gorgeous65_at_msn.com>
> To:
> ejb_at_glassfish.dev.java.net
> <mailto:ejb_at_glassfish.dev.java.net>
> CC:
> persistence_at_glassfish.dev.java.net
> <mailto:persistence_at_glassfish.dev.java.net>
> Date: Mon, 18 Feb 2008
> 13:16:11 +0000
> Subject: question on
> entity relation. -
> unidirectional
>
> hello everyone,
>
> I have two entities:
>
> *public class
> Iteamdetailsent
> implements Serializable{*
> **
> *_at_Id
> @Column(name="ITMID",
> nullable=false, length=8)
> private String itmid;*
> **
> ....
>
>
> And
>
> *public class
> Stockinforent
> implements
> java.io.Serializable
> {
>
> @Id
> @Column(name =
> "ITMID",
> insertable=false,
> updatable=false)
> private String
> itmid;
> @OneToOne()
> @JoinColumn(name="ITMID")
> private
> Iteamdetailsent
> iteamdetailsent;*
> **
> .....
>
> Stockinforent does
> not required an ID of
> it's own so it is
> using Iteamdetailsent
> foriegn key
> as it's id. Now I am
> also using the MVC to
> get and display data
> to client. Moreover, I am
> also using displaytag
> as part of my design.
> Now, I am using a
> servlet to retrieve
> data from the entities
> and then forwarding
> data to a JSP to
> display to client. For
> example, in my display
> JSP:
>
>
> *<display:table
> name="sessionScope.iteamdetailsent"
> ..>*
> * <display:column
> property="itmid"
> title=" Itemcode "/>
>
> <display:column
> property="itmname"
> sortable="true"
> headerClass="sortable"
> title=" Name "/>
> ...*
> *</display:table>*
>
>
> Now, how do I display
> data or retrieve data
> of Stockinforent in
> relations to
> Iteamdetailsent?
> I am hoping that I
> won't have to use
> bi-directional entity
> relation, as it's so
> hard to maintain.
> Please, help.
>
>
> Thanks
>
> eve
>
>
>
>
>
> ------------------------------------------------------------------------
> Messenger on the move.
> Text MSN to 63463 now!
> <http://mobile.uk.msn.com/pc/messenger.aspx>
>
>
>
> ------------------------------------------------------------------------
> Think you know your TV,
> music and film? Try Search
> Charades!
> <https://www.searchcharades.com/>
>
>
>
> ------------------------------------------------------------------------
> Think you know your TV, music
> and film? Try Search Charades!
> <https://www.searchcharades.com/>
>
>
> ------------------------------------------------------------------------
> Messenger on the move. Text MSN to
> 63463 now!
> <http://mobile.uk.msn.com/pc/messenger.aspx>
>
>
>
> ------------------------------------------------------------------------
> Think you know your TV, music and film? Try
> Search Charades!
> <https://www.searchcharades.com/>
>
>
> ------------------------------------------------------------------------
> Think you know your TV, music and film? Try Search
> Charades! <https://www.searchcharades.com/>
>
>
> ------------------------------------------------------------------------
> Sounds like? How many syllables? Guess and win prizes
> with Search Charades! <http://www.searchcharades.com/>
>
>
> ------------------------------------------------------------------------
> Think you know your TV, music and film? Try Search Charades!
> <https://www.searchcharades.com/>
>
>
> ------------------------------------------------------------------------
> Messenger on the move. Text MSN to 63463 now!
> <http://mobile.uk.msn.com/pc/messenger.aspx%20>