# JSF mit Hibernate Hausübung Property not found



## npu (31. Mrz 2010)

Bin grade dabei meine Hausübung zu Programmieren, nur leider stolpere ich immer wieder über so kleine Fehler.

Hab hier den Stacktrace meines Fehlers.


```
javax.servlet.ServletException: /user1.xhtml @18,97 binding="#{NeueTaetigkeitBean.getKostenstellenItems}": Property 'getKostenstellenItems' not found on type bean.NeueTaetigkeitBean
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

javax.el.PropertyNotFoundException: /user1.xhtml @18,97 binding="#{NeueTaetigkeitBean.getKostenstellenItems}": Property 'getKostenstellenItems' not found on type bean.NeueTaetigkeitBean
	com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:73)
	com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:229)
	com.sun.facelets.tag.jsf.ComponentHandler.createComponent(ComponentHandler.java:224)
	com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:139)
	com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
	com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
	com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
	com.sun.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:64)
	com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:131)
	com.sun.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:310)
	com.sun.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:280)
	com.sun.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:68)
	com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
	com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
	com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
	com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
	com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
	com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
	com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
	com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:144)
	com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:113)
	com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
	com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
	com.sun.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:95)
	com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:524)
	com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:567)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.
```

Hier meine faces-config

[XML]<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config version="1.2" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
    <application>
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
    </application>


    <managed-bean>
        <managed-bean-name>LoginBean</managed-bean-name>
        <managed-bean-class>bean.LoginBean</managed-bean-class>

        <managed-bean-scope>session</managed-bean-scope></managed-bean>




    <navigation-rule>
        <navigation-case>
            <from-outcome>success</from-outcome>
            <to-view-id>/userArea.xhtml</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>1</from-outcome>
            <to-view-id>/user1.xhtml</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>2</from-outcome>
            <to-view-id>/user2.xhtml</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>3</from-outcome>
            <to-view-id>/user3.xhtml</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>4</from-outcome>
            <to-view-id>/user4.xhtml</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>logout</from-outcome>
            <to-view-id>/login.xhtml</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>validatepw</from-outcome>
            <to-view-id>/loginValidatePassword.xhtml</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>1check</from-outcome>
            <to-view-id>/user1Check.xhtml</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>2show</from-outcome>
            <to-view-id>/user2Show.xhtml</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>3show</from-outcome>
            <to-view-id>/user3Show.xhtml</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>4check</from-outcome>
            <to-view-id>/user4Check.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>
    <managed-bean>
        <managed-bean-name>NeueTaetigkeitBean</managed-bean-name>
        <managed-bean-class>bean.NeueTaetigkeitBean</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
</faces-config>

[/XML]

Der Auszug aus meinem Bean.


```
public class NeueTaetigkeitBean {

    private Kostenstelle k;
    private static int MINDAUER = 10;
    private static int MAXDAUER = 120;
    private String beschreibung;


    public List<SelectItem> getKostenstellenItems()
    {
        List<SelectItem> l = new ArrayList<SelectItem>();

        return l;
    }
}
```

und zu guter Letzt meine Form


```
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    
    <body>
        
        <ui:composition template="./userTemplate.xhtml">
            
            <ui:define name="top">
                Erfassen neuer Tätigkeiten
            </ui:define>

            <ui:define name="content">
                    <h:form>
                        <h:selectOneMenu binding="#{NeueTaetigkeitBean.getKostenstellenItems}"/>
                        <h:selectOneMenu binding="#{NeueTaetigkeitBean.getDauerItems}"/>
                        <h:inputTextarea binding="#{NeueTaetigkeitBean.beschreibung}"/>
                        <h:commandButton binding="Prüfen" action="1check" />
                    </h:form>
            </ui:define>
            
        </ui:composition>
        
    </body>
</html>
```

Tja ich komme nicht auf den Fehler, hab schon beim Bean und ber der Faces Config herumgeschuster, bin aber zu keinem Ergebnis gekommen. Google habe ich schon befragt, und hier im Board habe ich auch nichts passendes gefunden (bzw, haben die Lösungen bei mir nicht gepasst)

Wäre echt nett, wenn ihr mir da helfen könntet!


----------



## faetzminator (31. Mrz 2010)

Hab noch nie wirklich mit JSF gearbeitet, aber alleine die Fehlermeldung [c]Property 'getKostenstellenItems' not found[/c] sagt mir, dass dies wohl nicht [c]getKostenstellenItems[/c] sondern [c]kostenstellenItems[/c] heissen sollte, wenn der Getter wie ersteres heisst.


----------



## npu (31. Mrz 2010)

dies beseitigt auf jeden fall das problem mit den errors, hat mir viel geholfen, danke!


----------



## npu (2. Apr 2010)

Habe jetzt ein neues Problem festgestellt und mir bereits einen Wolf gegoogelt.

Folgendes Mapping, Lazy Loading hab ich der einfachheithalber mal auf false gestellt


[XML]<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 25.03.2010 20:10:27 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
  <class name="model.Taetigkeit" schema="public" table="taetigkeit" lazy="false" >
    <id name="taeId" type="int">
      <column name="tae_id"/>
      <generator class="assigned"/>
    </id>
    <many-to-one class="model.Mitarbeiter" fetch="select" name="mitarbeiter" cascade="all">
      <column length="6" name="tae_mit_id"/>
    </many-to-one>
    <many-to-one class="model.Kostenstelle" fetch="select" name="kostenstelle" cascade="all">
      <column name="tae_kos_id"/>
    </many-to-one>
    <property name="taeDate" type="date">
      <column length="13" name="tae_date"/>
    </property>
    <property name="taeDauer" type="java.lang.Integer">
      <column name="tae_dauer"/>
    </property>
    <property name="taeBeschreibung" type="string">
      <column length="200" name="tae_beschreibung"/>
    </property>
  </class>
</hibernate-mapping>
[/XML]

SCHWERWIEGEND: Batch-Eintrag 0 insert into public.taetigkeit (tae_mit_id, tae_kos_id, tae_date, tae_dauer, tae_beschreibung, tae_id) values (000001, 1, 2010-04-01 +02:00:00, 40, Programmieren, 0) wurde abgebrochen
SCHWERWIEGEND: Batch-Eintrag 0 insert into public.taetigkeit (tae_mit_id, tae_kos_id, tae_date, tae_dauer, tae_beschreibung, tae_id) values (000001, 2, 2010-07-21 +02:00:00, 80, Testen, 0) wurde abgebrochen

Das heißt er inkrementiert mein tae_id nicht.

Und bei folgendem Mapping hier kommt eine andere Fehlermeldung

[XML]<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 25.03.2010 20:10:27 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
  <class name="model.Taetigkeit" schema="public" table="taetigkeit" lazy="false" >
    <id name="taeId" type="int">
      <column name="tae_id"/>
      <generator class="native">
        <param name="sequence">taetigkeit_tae_id_seq</param>
      </generator>
    </id>
    <many-to-one class="model.Mitarbeiter" fetch="select" name="mitarbeiter" cascade="all">
      <column length="6" name="tae_mit_id"/>
    </many-to-one>
    <many-to-one class="model.Kostenstelle" fetch="select" name="kostenstelle" cascade="all">
      <column name="tae_kos_id"/>
    </many-to-one>
    <property name="taeDate" type="date">
      <column length="13" name="tae_date"/>
    </property>
    <property name="taeDauer" type="java.lang.Integer">
      <column name="tae_dauer"/>
    </property>
    <property name="taeBeschreibung" type="string">
      <column length="200" name="tae_beschreibung"/>
    </property>
  </class>
</hibernate-mapping>
[/XML]

WARNUNG: SQL Error: 0, SQLState: 42P01
02.04.2010 13:29:24 org.hibernate.util.JDBCExceptionReporter logExceptions
SCHWERWIEGEND: FEHLER: Relation »taetigkeit_tae_id_seq« existiert nicht

Die taetigkeit_tae_id_seq heißt in der Tabelle auch so, ob ich sie jetzt vorne große oder klein schreibe.

Was könnte hier nur der Fehler sein?


----------



## npu (6. Apr 2010)

Problem war, dass der Kompiler nach der Sequence in der Datenbank gesucht hat, nur immer kleine geschrieben, obwohl es in der db groß war.


----------

