er det muligt at have en create() metode i home interfacet, der ikke har ind parametre. Grunden til at jeg har behov for dette er, at jeg skal skal have en oprettet en instans af EJBHome så jeg kan kalde metoder på min bønne. Bruge CMP. Når jeg gør dette kan jeg ikke indsætte i databasen. Skal jeg virkelig have create(ind parametre) med indparametre. ?? mit home interface ser sådan ud: public interface ConsultHome extends EJBHome { public Consult create() throws RemoteException, CreateException; public Consult create(int id, Timestamp date, Integer amount, Integer typeid, Integer projectid, String description, Integer locked, Integer lockedid, String dayid, String user, String interndescription, Timestamp lastupdate, Integer state) throws CreateException, RemoteException; public Consult create(int id) throws RemoteException, CreateException; public Consult findByPrimaryKey(int primaryKey) throws RemoteException, FinderException; public Collection findAll() throws RemoteException, FinderException; }
Jeg har meget svært ved at forstå hvad du mener! Man får en instans af EJBHome ved at lave en lookup. På denne instans kan man så kalde create eller finder-metoder. Med CMP danner du jo et persistent object ved kald af create(). Create() skal som minimum definere en primær-nøgle enten som parameter eller i implementeringen af create()-metoden.
} catch(Exception e) { e.printStackTrace(); } Jeg ved godt at jeg danner er persistene møsnter ved create(), men jeg ønsker ikke at indsætte data via min create() metode men derimod min set metoder
Jeg er stadig forvirret - bruger du CMP, BMP eller begge dele???? Bruger du CMP, så glem alt om den reelle database! Du arbejder jo med et abstrakt database-skema, hvor du via din descriptor angiver finder-kald vha. QL. 1) Lav et lookup til Home. 2) Find de konkrete instanser du skal bruge vha. en finder eller én konkret instans vha. findByPrimaryKey(id). 3) Du kan nu kalde business-metoder via en remote-reference.
Du er nødt til at finde det object, der skal opdateres først! Du kan ikke opdatere en instans via Home-interfacet.
jeg bruger kun CMP ver 1.1 og ikke BMP. Ok jeg skal lave en finder ok. Så hvis jeg vil have opdateret en række i databasen kan jeg bruge findbyprimarykey eller findAll() ok prøver det lige
Hvad nu hvis det var en ren objekt-orienteret database, der var installeret i containeren - vil du så også kalde det en række i databasen? Glem den database! :-))
Ok kan se iden. Har gjort følgende: Får ingen fejl men får heller ikke opdateret DB. Hvad er det jeg mangler ?
public void setAllTimeregistrering() { Collection returnValue = null; try { Userlookup();// metode i superklasser der laver lookup og får en reference til consultHome interfacet
1) Får du noget i din Collection? 2) Har du angivet attributterne som persistente i descriptor? 3) Har du anivet de rigtige transaktions-indstillinger på metoderne?
Prøv at undersøge ovenstående først. Håber det hjælper lidt.
Jeg forstod ikke det med, at du kaldte en getMetode på din Collection og returnerede værdien. Jeg går ud fra, at det var en skrivefejl. Du kunne altså godt kalde get-metoden på alle dine Consult-objekter, som hver især returnerede deres værdi?
ok kama, af en eller anden grund virker det nu med at jeg kan indsætte i databasen. MEN Når jeg indsætter opdateres samtlige rækker i min database. De værdier der kun skulle indsættes i en række bliver nu indsat i samtlig rækker i min database. Det er den samme kode jeg har postet jeg bruger. Kan du gennemskue det ??
Hvordan udgår jeg så dette. Skulle jo gerne have en reference til Remote og skulle jo gerne indsætte i databasen ikke overskrive alle min rækker i databasen. Hver gang jeg kalder setAllTimeregistrering() skulle jeg gerne indsætte i en ny række i databasen. Men kan ikke lige se hvordan jeg gør
Du vil bare ikke høre efter, hva'? :-)) Du benytter create() til at danne en instans! Nu kender jeg ikke logikken i dit system, men hvis du arbejder OO så er det jo lige ud ad landevejen. Det virker lidt som om, at du vil skabe persistens på nogle relationer. Hvis dette er tilfældet så er løsningen jo CMR - så sker det helt automatisk.
Du kan godt have en blank create metode i din CMP ejb, du har bare ansvaret for at bønnen har en unik instans af din primære nøgle for din CMP ejb, f.eks.
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.