Announcement

Collapse
No announcement yet.

Primärschlüssel automatisch erzeugen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Primärschlüssel automatisch erzeugen

    Moin Moin,
    Folgendes Problem. Ich möchte mir eine Geschäftspartnerverwaltung schreiben. Die Enitity Bean lasse ich mir automatisch aus einer Datenbanktabelle generieren. Es soll natürlich die Möglichkeit bestehen, dieser Geschäftspartnerverwaltung Partner über eine Web Service Schnittstelle hinzufügen zu können. Dabei soll der Eingabeparameter für die Web Service Methode der Partner(Entity Bean) sein. Getestet wird die Methode über das Web Interface des Oracle Application Servers. Es lässt sich der Datensatz jedoch nur einfügen, wenn die Felder für den Primärschlüssel(id) und Fremdschlüssel(id_mandant) gesetzt sind. Hierzu habe ich einige Annotations ausprobiert, die mir den Primärschlüssel automatisch erzeugen sollen. Lasse ich beim testen der Methode das "id" Feld leer, wird jedoch eine Exception geworfen....
    Wie bekomme ich es hin, dass beim einfügen eines neuen Datensatzes der Primärschlüssel von der Datenbank automatisch erzeugt wird? und wie kann ich diese Methode über das Web Interface des Application Servers testen, ohne das ich das "id" Feld mit einem Wert füllen muss.

    Meine Enitity Bean sieht folgendermaßen aus:
    Code:
    import java.io.Serializable;
    
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.NamedQueries;
    import javax.persistence.NamedQuery;
    
    @Entity
    @NamedQueries ({
    @NamedQuery(name = "Partner.findAll", query = "select o from Partner o"),
    @NamedQuery(name="Partner.getPartner", query="select o from Partner o where o.id= :id")
    })
    
    public class Partner implements Serializable {
        @Column(name="ANGELEGT_AM")
        private String angelegtAm;
        private String ansprechpartner;
        private String bank;
        private String blz;
        private String email;
        @Column(name="EMAILADRESSE_BAG")
        private String emailadresseBag;
        private String fax;
        @Column(name="GEAENDERT_AM")
        private String geaendertAm;
        @Column(name="GEAENDERT_VON")
        private String geaendertVon;
        private String homepage;
        @Id
        @GeneratedValue(strategy=GenerationType.TABLE)
        private Long id;
        @Column(name="ID_MANDANT", nullable = false)
        private Long idMandant;
        @Column(name="ID_UMSATZSTEUER")
        private String idUmsatzsteuer;
        private String kontonr;
        private String kreditorennr;
        private String kundennr;
        @Column(name="KUNDENNR_WWS")
        private String kundennrWws;
        @Column(name="LOGIN_NAME")
        private String loginName;
        @Column(name="LOGIN_PASSWORT")
        private String loginPasswort;
        private String partner;
        @Column(name="RE_NAME1")
        private String reName1;
        @Column(name="RE_NAME2")
        private String reName2;
        @Column(name="RE_ORT")
        private String reOrt;
        @Column(name="RE_PLZ")
        private String rePlz;
        @Column(name="RE_STRASSE")
        private String reStrasse;
        private String telefon;
        private String typ;
        @Column(name="VON_WEM")
        private String vonWem;
    
        public Partner() {
        }
    
        public String getAngelegtAm() {
            return angelegtAm;
        }
    
        public void setAngelegtAm(String angelegtAm) {
            this.angelegtAm = angelegtAm;
        }
    
        public String getAnsprechpartner() {
            return ansprechpartner;
        }
    
        public void setAnsprechpartner(String ansprechpartner) {
            this.ansprechpartner = ansprechpartner;
        }
    
        public String getBank() {
            return bank;
        }
    
        public void setBank(String bank) {
            this.bank = bank;
        }
    
        public String getBlz() {
            return blz;
        }
    
        public void setBlz(String blz) {
            this.blz = blz;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public String getEmailadresseBag() {
            return emailadresseBag;
        }
    
        public void setEmailadresseBag(String emailadresseBag) {
            this.emailadresseBag = emailadresseBag;
        }
    
        public String getFax() {
            return fax;
        }
    
        public void setFax(String fax) {
            this.fax = fax;
        }
    
        public String getGeaendertAm() {
            return geaendertAm;
        }
    
        public void setGeaendertAm(String geaendertAm) {
            this.geaendertAm = geaendertAm;
        }
    
        public String getGeaendertVon() {
            return geaendertVon;
        }
    
        public void setGeaendertVon(String geaendertVon) {
            this.geaendertVon = geaendertVon;
        }
    
        public String getHomepage() {
            return homepage;
        }
    
        public void setHomepage(String homepage) {
            this.homepage = homepage;
        }
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public Long getIdMandant() {
            return idMandant;
        }
    
        public void setIdMandant(Long idMandant) {
            this.idMandant = idMandant;
        }
    
        public String getIdUmsatzsteuer() {
            return idUmsatzsteuer;
        }
    
        public void setIdUmsatzsteuer(String idUmsatzsteuer) {
            this.idUmsatzsteuer = idUmsatzsteuer;
        }
    
        public String getKontonr() {
            return kontonr;
        }
    
        public void setKontonr(String kontonr) {
            this.kontonr = kontonr;
        }
    
        public String getKreditorennr() {
            return kreditorennr;
        }
    
        public void setKreditorennr(String kreditorennr) {
            this.kreditorennr = kreditorennr;
        }
    
        public String getKundennr() {
            return kundennr;
        }
    
        public void setKundennr(String kundennr) {
            this.kundennr = kundennr;
        }
    
        public String getKundennrWws() {
            return kundennrWws;
        }
    
        public void setKundennrWws(String kundennrWws) {
            this.kundennrWws = kundennrWws;
        }
    
        public String getLoginName() {
            return loginName;
        }
    
        public void setLoginName(String loginName) {
            this.loginName = loginName;
        }
    
        public String getLoginPasswort() {
            return loginPasswort;
        }
    
        public void setLoginPasswort(String loginPasswort) {
            this.loginPasswort = loginPasswort;
        }
    
        public String getPartner() {
            return partner;
        }
    
        public void setPartner(String partner) {
            this.partner = partner;
        }
    
        public String getReName1() {
            return reName1;
        }
    
        public void setReName1(String reName1) {
            this.reName1 = reName1;
        }
    
        public String getReName2() {
            return reName2;
        }
    
        public void setReName2(String reName2) {
            this.reName2 = reName2;
        }
    
        public String getReOrt() {
            return reOrt;
        }
    
        public void setReOrt(String reOrt) {
            this.reOrt = reOrt;
        }
    
        public String getRePlz() {
            return rePlz;
        }
    
        public void setRePlz(String rePlz) {
            this.rePlz = rePlz;
        }
    
        public String getReStrasse() {
            return reStrasse;
        }
    
        public void setReStrasse(String reStrasse) {
            this.reStrasse = reStrasse;
        }
    
        public String getTelefon() {
            return telefon;
        }
    
        public void setTelefon(String telefon) {
            this.telefon = telefon;
        }
    
        public String getTyp() {
            return typ;
        }
    
        public void setTyp(String typ) {
            this.typ = typ;
        }
    
        public String getVonWem() {
            return vonWem;
        }
    
        public void setVonWem(String vonWem) {
            this.vonWem = vonWem;
        }
    }
    Das ganze wird in der Session Bean über folgendermaßen aufgerufen:
    Code:
        public void addPartner(Partner partner){
            em.persist(partner);      
        }
    Das Web Service Interface sieht folgendermaßen aus:
    Code:
    void addPartner(Partner partner)throws RemoteException;
    Ich hoffe das ist alles einigermaßen verständlich...

    Vielen Dank
    Hendrik
    Zuletzt editiert von heno; 27.04.2008, 10:21.

  • #2
    Mit @GeneratedValue ist das schon genau der richtige Weg. Nur, du verwendest eine externe Tabelle, in der die Schlüssel verwaltet werden. Die muss es a) geben und b) einen besonderen Namen haben (andernfalls musst du den Namen der Tabelle noch angeben). Mein Tipp: Nutze einfach @GeneratedValue ohne die Strategie GenerationType.TABLE. Dann wird als Strategie AUTO verwendet. Schau mal unter http://www.oracle.com/technology/pro...eneration.html rein.

    Christian | tutego

    Comment

    Working...
    X