PropertyNotFound - Exception (Anfängerfrage?)

Diskutiere PropertyNotFound - Exception (Anfängerfrage?) im Data Tier Forum; Hallo zusammen! Ich bin relativ neu in Java und auch in JPA und arbeite mich gerade durch ein Buch um die Beziehungen und zugehörigen...

  1. FINF_AW_Alex
    FINF_AW_Alex Neues Mitglied
    Hallo zusammen!

    Ich bin relativ neu in Java und auch in JPA und arbeite mich gerade durch ein Buch um die Beziehungen und zugehörigen Annotationen zu verstehen.

    Ich habe jetzt zwei Entitys erstellt und die Entity "Kunde" mit der Entity "Adresse" per OnetoOne verknüpft. Die property "strasse" spreche ich über einen EL Ausdruck in JSF an.

    Wenn ich nun Daten in die "Adresse" schreiben will findet er die verknüpfte Propperty nicht.


    001.PNG


    hat jemand einen Rat?

    viele Grüße, Alex !!

    HTML:

            <h:form id="form_gruppe">    
               
                <h:panelGrid     columns="2"  cellpadding="5" >
                    <h:outputLabel   for="nname"  value="Nachname : "/>
                    <h:inputText     id="nname"   value="#{beispielPM.kunde.nachname}"/>
                    <h:outputLabel   for="vname"  value="Vorname : "/>
                    <h:inputText     id="vname"   value="#{beispielPM.kunde.vorname}"/>
                    <h:outputLabel   for="strasse"  value="Strasse : "/>
                    <h:inputText     id="strasse"   value="#{beispielPM.kunde.adresse.strasse}"/>
                </h:panelGrid>
               
                <h:commandButton value="add"  action="#{beispielPM.storeKunde()}"/>
           
            </h:form>

     
    Presentation Modell:
    Code (Java):

    @Named
    @RequestScoped
    public class BeispielPM {
       
        private Kunde   kunde   = new Kunde();
        private Adresse adresse = new Adresse();
       
       
        @EJB
        JpaBean bean;
       
       
    //------GETTER&SETTERS---------------------------

        public Adresse getAdresse() {
            return adresse;
        }

        public void setAdresse(Adresse adresse) {
            this.adresse = adresse;
        }
       
        public Kunde getKunde() {
            return kunde;
        }

        public void setKunde(Kunde kunde) {
            this.kunde = kunde;
        }
       
    //------METHODS----------------------------------    
        public void storeKunde(){
            bean.addKunde(kunde);
            System.out.println("Kunde gespeichert!");
        }    
       
    }
     
    BEAN:
    Code (Java):
    @Named
    @Stateless
    public class JpaBean {
       
        @PersistenceContext
        EntityManager em;

       
        public void addKunde(Kunde kunde){
            em.persist(kunde);
            System.out.println("Kunde hinzugefügt!");
        }
    }
    Kunde:
    Code (Java):
    @Entity
    public class Kunde implements Serializable {
        private static final long serialVersionUID = 1L;
       
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;

        private String vorname;
        private String nachname;
        private String anrede;
        private String geburtsdatum ;
       
        @OneToOne(optional = false, cascade = CascadeType.ALL)
        @JoinColumn(name="adresse",nullable = false)
        private Adresse adresse;
     
    Zuletzt bearbeitet: 18. Nov. 2014
  2. Vielleicht hilft dir dieser Kurs hier weiter --> (hier klicken)
  3. Joose
    Joose Super-Moderator Mitarbeiter
    Du greifst auf "kunde.adresse.strasse" zu. Ich gehe davon aus das "adresse" null ist und deswegen die Exception fliegt.
    Laut deinem Code erstellst du in BeispielPM ein Objekt der Klasse Kunde. Dieses Objekt enthält zwar ein Attribut vom Typ Adresse, dieses ist aber nicht initialisiert! Daher die Exception.
    Du darfst den Wert nicht direkt zum Kunden schreiben sondern musst dein Adresse Objekt von Beispiel PM nehmen!
     
  4. FINF_AW_Alex
    FINF_AW_Alex Neues Mitglied
    Hey Joose ! :)

    Danke für die schnelle Antwort, ich hatte am anfang auch den zugriff auf das Adressenobjekt vom PM

    HTML:

            <h:form id="form_gruppe">    
               
                <h:panelGrid     columns="2"  cellpadding="5" >
                    <h:outputLabel   for="nname"  value="Nachname : "/>
                    <h:inputText     id="nname"   value="#{beispielPM.kunde.nachname}"/>
                    <h:outputLabel   for="vname"  value="Vorname : "/>
                    <h:inputText     id="vname"   value="#{beispielPM.kunde.vorname}"/>
                    <h:outputLabel   for="strasse"  value="Strasse : "/>
                    <h:inputText     id="strasse"   value="#{beispielPM.adresse.strasse}"/>
                </h:panelGrid>
               
                <h:commandButton value="add"  action="#{beispielPM.storeKunde()}"/>
           
            </h:form>
     
    Allerdings wird so nur der Kunde geschrieben und die Adresse nicht. Es gibt auch keine Exception... komisch oder? ???:L

    Ich hab es dann umgeändert weil ich dachte "die Tabelle Adresse ist doch auch ein Teil von der Kunden Tabelle" desshalb dacht ich vielleicht muss ich direkt auf das Adressenobjekt in der KundeEntity zugreifen (KUNDE Zeile 16).
     
  5. Joose
    Joose Super-Moderator Mitarbeiter
    Ist natürlich logisch das dann nur der Kunde in die Datenbank kommt ohne Adresse.
    Du erzeugst ein Adresse Objekt und ein Kunde Objekt, stellst aber nie eine Verbindung zwischen den beiden her.

    Also: Verwende wie oben schon im Code vorhanden 2 Objekte (1xAdresse, 1xKunde) und bevor du den Kunden in die Datenbank schreibst fügst du dem Kunden die Adresse hinzu.
     
  6. FINF_AW_Alex
    FINF_AW_Alex Neues Mitglied
    Ja geil !!!

    hat geklappt !!!

    Code (Java):

    public class BeispielPM {
       
        private Kunde   kunde   = new Kunde();
        private Adresse adresse = new Adresse();
       
       
        @EJB
        JpaBean bean;
       
     //------METHODS----------------------------------    
        public void storeKunde(){
            kunde.setAdresse(adresse);     //<<--- das hab ich geändert
            bean.addKunde(kunde);
            System.out.println("Kunde gespeichert!");
        }
     
    vielen Dank !!
     
Die Seite wird geladen...

PropertyNotFound - Exception (Anfängerfrage?) - Ähnliche Themen

javax.el.PropertyNotFoundException: Property 'bezeichnung' not found on type Entities.Produkt
javax.el.PropertyNotFoundException: Property 'bezeichnung' not found on type Entities.Produkt im Forum Web Tier
javax.el.PropertyNotFoundException bei kleinem JSF-Projekt
javax.el.PropertyNotFoundException bei kleinem JSF-Projekt im Forum Web Tier
PropertyNotFoundException
PropertyNotFoundException im Forum Web Tier
JspPropertyNotFoundException Jsp findet Property nicht??
JspPropertyNotFoundException Jsp findet Property nicht?? im Forum Web Tier
javax.el.PropertyNotFoundException !
javax.el.PropertyNotFoundException ! im Forum Data Tier
Thema: PropertyNotFound - Exception (Anfängerfrage?)