błąd przy pobraniu encji (Hibernate)

Odpowiedz Nowy wątek
2015-01-29 22:47
0

mam w projekcie w kontrolerze taka metode:

@RequestMapping(value =  "/welcome**", method = RequestMethod.GET)
    public ModelAndView welcomePage(@ModelAttribute EmployeeEntity employee, BindingResult result,Principal principal, ModelMap map) {

        ModelAndView model = new ModelAndView();

        //map.addAttribute("employee", new EmployeeEntity());

        String username = principal.getName();
        String status = employeeManager.getEmployeeStatus(username);

        map.addAttribute("employee", employeeManager.getEmployeeData(username));
        model.addObject("status", status);
        model.setViewName("hello");
        return model;

    }

chodzi tu o to gosc loguje sie za pomoca username i password i ja po jego usernamie go identyfikuje, mam metode ktora w DAO przyjmuje username (getEmployeeData) a zwraca encje i przekazuje ja z powrotem i wypelnia formularz danymi ktore w bazie ma ten gosc. Prosta operacja tylko ze nie moge tego zrobic wlasnie zeby wypelnialo formularz jego danymi. Do tej pory dzialalo bez problemu jak byl czysty formularz (zakomentowana linijka). W czym tkwi blad?

edytowany 1x, ostatnio: marlukk, 2015-01-29 22:49

Pozostało 580 znaków

2015-01-30 01:59
0
        ModelAndView model = new ModelAndView();
        map.addAttribute("employee", employeeManager.getEmployeeData(username));
        model.addObject("status", status);
        model.setViewName("hello");

Serio? WTF? Czemu robisz to samo na N sposobów?

        ModelAndView model = new ModelAndView("hello");
        model.addObject("status", status);
        model.addObject("employee", employeeManager.getEmployeeData(username));

To raz.
Dwa, reszta wygląda ok. Pokaż jeszcze ten formularz skoro coś nie działa.

A taki hint ode mnie: przesłyłanie obiektów encyjnych przez formularze to proszenie się o guza bo kiedyś się okaże że masz gdzieś otwartą sesje z bazą danych i cuda się zaczną dziać w bazie ;]


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-01-30 15:15
0

@Shalom, faktycznie masz racje ale to nie jest powodem bledu.
Formularz:

<form:form method="post" action="update" commandName="employee">
        <tr>
            <form:hidden path="id" />
        </tr>

        <table>
        <tr>
            <td><form:label path="username"><spring:message code="label.username"/></form:label></td>
            <td><form:input path="username" /></td>
            <td><form:errors path="username" cssClass="error" /></td>
        </tr>

//kolejne pola w formularzu

    </table> 
    </div>
        <div id="center">
        <tr>
            <td colspan="2">
                <input type="submit" value="edytuj"/>
            </td>
        </tr>

    </form:form>

kontroler:

@RequestMapping(value =  "/welcome**", method = RequestMethod.GET)
    public String welcomePage(@ModelAttribute EmployeeEntity employee, BindingResult result,Principal principal, ModelMap map) {

        //map.addAttribute("employee", new EmployeeEntity());

        String username = principal.getName();
        String status = employeeManager.getEmployeeStatus(username);

        int punkty = employeeManager.getEmployeePoints(username);
        map.addAttribute("employee", employeeManager.getEmployeeData(username));

        map.addAttribute("status", status);
        map.addAttribute("punkty", punkty);

        return "hello";

    }

a to metoda DAO:

@Override
    public EmployeeEntity getEmployeeData(String username) {
        Query query = sessionFactory.getCurrentSession().createQuery("from EmployeeEntity where username = :username");
        query.setParameter("username", username);

        List<EmployeeEntity> list = query.list();
        EmployeeEntity student = (EmployeeEntity)list.get(0);
        return student;
    }

chce po prostu w momencie wywolania zadania /welcome miec juz uzupelniony formularz. W stanie obecnym żadanie /welcome wywoluje wyjatek:

Request processing failed; nested exception is org.hibernate.HibernateException: No Session found for current thread
edytowany 1x, ostatnio: marlukk, 2015-01-30 15:21

Pozostało 580 znaków

2015-01-30 16:03
0

Nie ma sesji z bazą danych dlatego taki błąd. Czy twoje DAO ma adnotację @Transactional? Nie zapomniałeś dodać transakcji w konfiguracji?

edytowany 1x, ostatnio: olek1, 2015-01-30 16:04

Pozostało 580 znaków

2015-01-30 16:08
0

@olek1, faktycznie nie bylo adnotacji przy metodzie w serwisie ale dodalem i ten sam blad. Transakcje wlaczone:

<bean id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager"/>

Pozostało 580 znaków

2015-01-30 18:14
0
<tx:annotation-driven transaction-manager="transactionManager"/>

Spróbuj to przerzucić do servlet.xml

edytowany 1x, ostatnio: olek1, 2015-01-30 18:14

Pozostało 580 znaków

2015-01-30 21:07
0

@olek1, ale to juz jest w servlet.xml

pomoze ktos? bede wdzieczny

Pozostało 580 znaków

2015-01-30 22:52

Jeśli nadal masz session not found to albo brakuje ci @Transactional albo transakcje są źle skonfigurowane. Podaj link do repo...


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-01-30 23:04
0

@Transactional na pewno sa, nie mam nigdzie tego umieszczonego to nie podam ci linka, moge podrzucic jako kod dowolny plik ok?

Pozostało 580 znaków

2015-01-30 23:10
0

Ech no jak nie chcesz udostępniać to zrób PoC jakieś. Prosty i krótki kod który prezentuje ten sam błąd. Przy okazji możesz popatrzyć na to: https://github.com/Pharisaeus/SpringScaffoldApplication i porównać co masz inaczej (z dokładnością do różnicy że masz gołe Hibernate a nie JPA)


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-01-30 23:12
0

@Shalom, ok dziala juz... okazalo sie ze projekt byl nie przebudowany bo z mavenem sie cos zrypalo ze nie budowal tego projektu co potrzeba i nie zapisal moich zmian z dodaniem adnotacji @Transactional. Dzieki za pomoc...

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0