Avatar billede kube Nybegynder
14. december 2004 - 20:03 Der er 10 kommentarer og
1 løsning

hvordan slettes tuple fra databasen via en entity bean?

Hej,
jeg har fulgt arne v's artikel. Men hvordan slettes en tuple?

Jeg har prøvet at læse om ejbRemove(), men hvordan kaldes denne (hvis det er den der sletter en tuple). Skal der implementeres noget i metoden, så tuplen slettes?
Avatar billede arne_v Ekspert
14. december 2004 - 20:12 #1
Du kalder remove metoden på home interfacet med en primary key som argument.
Avatar billede arne_v Ekspert
14. december 2004 - 20:16 #2
ejbRemove metoden i din bean klasse kaldes inden rækken slettes.

(det kan du bruge til f.eks. at throwe en RemoveException, hvis du ikke vil
tillade sletning)
Avatar billede arne_v Ekspert
14. december 2004 - 20:18 #3
Og hvis du undrer dig over hvorfor du kan finde 100 entity bean eksempler uden at at
se et remove eksmepel, så er det fordi at i professionelle applikationer vil man typisk sætte
et inaktiv flag fremfor faktisk at slette rækken.
Avatar billede kube Nybegynder
14. december 2004 - 21:16 #4
Jeg tilføjer metoden remove(Integer custid) til home interface, men skal der ikke være en implementation i klassen CustomerEntityBean? Skal implementationen være i ejbRemove()?

import java.util.*;
import javax.ejb.*;


public interface CustomerEntityLocalHome extends EJBLocalHome
{
    // opret record
    public CustomerEntityLocal create(Integer custid, String name, String postcode, String email) throws CreateException;

    //slet
    public CustomerEntityLocal remove(Integer custid) throws RemoveException;

    // find record udfra primary key
    public CustomerEntityLocal findByPrimaryKey(Integer custid) throws FinderException;

    // find alle records
    public Collection findAll() throws FinderException;
}


Skal implementationen se således ud:
public void ejbRemove(Integer custid) throws RemoveException
    {
        System.out.println("sletter entitet.");
    }
Avatar billede kube Nybegynder
14. december 2004 - 21:22 #5
Eller skal jeg lave/implementere metoden remove(Integer custid), der opretter forbindelse til databasen og sletter tuplen?
Avatar billede arne_v Ekspert
14. december 2004 - 21:35 #6
Du skal ikke tilføje den til Home interfacet da den arves.

Implementationen ser helt fin ud (du bruger naturligvsi ikke System.out.println
i production).
Avatar billede arne_v Ekspert
14. december 2004 - 21:35 #7
Jeg forudsætter CMP.

Med BMP skal din ejbRemove metode lave en SQL DELETE statement.
Avatar billede kube Nybegynder
14. december 2004 - 22:30 #8
Hej Arne,
din hjælp..

Jeg troede først at public void ejbRemove(Integer custid) throws RemoveException skulle oprettes i oprettes i bønnen, men public void ejbRemove() throws RemoveException bruges! Så der skal ikke implementeres flere metoder i entity bønnen..

Kan man sende en String i stedet og så slette alle der har navnet Kurt fx eller kan der kun slettes ud fra primary key ved CMP?
Avatar billede arne_v Ekspert
14. december 2004 - 22:34 #9
Jeg har aldrig set det.

Jeg ville lave en findLikeName finder og så lade en session bean facade
kalde den og derefter kalde home remove i et loop.
Avatar billede kube Nybegynder
14. december 2004 - 22:37 #10
ok..
smider du et svar?
Avatar billede arne_v Ekspert
14. december 2004 - 22:45 #11
jep
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