Avatar billede simonvalter Praktikant
08. januar 2004 - 21:07 Der er 4 kommentarer og
1 løsning

JDO igen , persistere objekt med reference til et andet

Nå der var ikke mange forslag i det sidste JDO spm, men jeg prøver igen med et nyt ;)

Jeg prøver at persistere en BusinessPartner med application identity der har en reference til et Adresse Objekt

jeg har lavet begge klasser persistent capable


min metadata.jdo ser sådan ud: 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE jdo SYSTEM "file:jdo.dtd">
<jdo>
<package name="jdo1">
<class name="Address" />
<class name="BusinessPartner" identity-type="application" objectid-class="BusinessPartnerPK" >
<field name="partnerNumber" primary-key="true" />
<field name="address" embedded="true" />
</class>
</package>
</jdo>



jeg persisterer på denne måde

    t = pm.currentTransaction();
    t.begin();
    bp = new BusinessPartner();
    bp.setPartnerNumber(args[0]);
    bp.setName(args[1]);
    Address a = new Adress(args[2]);
    bp.setAddress(a);

    System.out.println("Persisting: "+bp);
    pm.makePersistent(bp);
    t.commit();




jeg henter objekterene ud igen med
 

  t.begin();
    Extent extPartner = pm.getExtent(BusinessPartner.class,false);

    Iterator i = extPartner.iterator();
    System.out.println("Listing partners:");
    while (i.hasNext()){
      System.out.println(i.next());
    }
    System.out.println("Done. ");
    extPartner.close(i);
    t.commit();




System.out.println("Persisting: "+bp);
viser bp som jeg har lavet den

System.out.println("Listing partners:");
viser: null for adress.
i databasen er der kommet dette:
  address  name  partnerNumber 
      [BLOB - 76 Bytes] simon 1

jeg har læst mig til dette i
C:\LiDO\doc\documents\html\default.htm <- fra:Let suppose we have the 2 following classes:
(har prøvet at implementere Serializable i Address klassen)

og i http://www.ogilviepartners.com/JdoBook.html


Hvad gør jeg forkert .. eller hvad skal jeg gøre for at få data ud igen om adressen.
Avatar billede simonvalter Praktikant
08. januar 2004 - 21:08 #1
tag jer ikke noget af at jeg skriver adress nogen steder og address andre .. det er rettet i koden. ;)
Avatar billede simonvalter Praktikant
08. januar 2004 - 21:10 #2
Avatar billede simonvalter Praktikant
08. januar 2004 - 23:38 #4
hvis der er nogen der lytter med det her har fået mig lidt mere på rette spor, men ikke helt

http://www.libelis.com/forum/thread.jsp?forum=1&thread=1988&message=4412&redirect=true&hilite=true&q=Embedded+SCO

hvis jeg gør sådan her

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE jdo SYSTEM "file:jdo.dtd">
<jdo>
<package name="jdo1">
<class name="Address" />
<class name="BusinessPartner">
</class>

</package>
</jdo>

får jeg en pk,fk relation mellem dem hvilket er fint, men det har mig ikke fået til at forstå hvad meningen så er med "embedded" og hvordan jeg bruger det. det ser umiddelbart ud til at Adress bliver serialiseret til en blob i BusinessPartner tabellen... men hvordan får jeg den ud igen. normalt ville jeg bruge noget fileinputstream ... men jeg kan ikke rigtigt se hvordan jeg skule kunne gøre det her.
Avatar billede simonvalter Praktikant
16. januar 2004 - 16:07 #5
nå fik lidt tid til at kigge på det igen

</class>
<class name="BusinessPartner">
<field name="address" embedded="true"/>
</class>


virker fint ...

bliver dematrialiseret og matrialiseret fra og til blob fint..

hvorfor jeg ikke må erklære
<class name="Address" />
samtidigt har jeg endnu ikke fået svar på endnu, docs siger man kan, men en af deres udviklere rådede mig til ikke at gøre det..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester