Witam serdecznie
chcąc zautomatyzować proces tworzenia obiektów dao postanowiłem pobawić się trochę typami generycznymi.
Znalazłem Ciekawy przykład na necie ale nie wiem dlaczego nie działa tak jak powinien ?
Już spieszę z wyjaśnieniami . Po pierwsze używam sprringa ver 3.1.1 oraz Jboss as 7 .. .
moje dao bazowe od którego dziedziczą inne wygląda następująco :
public abstract class DAO<T, I extends Serializable> implements IDAO<T, I>
{
Class<T> clazz;
//jeden domyślny konstruktor który musi być nadpisany w nadklasie
public DAO(Clazz<T> clazz)
{
this.clazz = clazz
}
@Override
public T findById(I id)
{
return this.entityManager.find(clazz, id);
}
......
public void save(T object)
{
entityManager.persist(object);
}
}
Przykładowa nadklasa:
public class PersonDAO extends DAO<TPerson, Integer> implements IPersonDAO
{
//Konstruktor domyślny automatycznie wywoływany po wstrzyknięciu w springu
public PersonDAO()
{
super(TPerson.class);
}
public void register(TPerson p)
{
entityManager.persist(p);
}
}
Co jest najdziwniejsze mam testy jednostkowe JUnit które są wykonywane w trakcie budowy projektu
i zarówno metoda register(TPerson p) jak i metoda save (T object ) działąją poprawnie !!
Natomiast jeśli chcę te metody użyć w ciele mojego kontrolera (@Controller) to metoda register działa poprawnie
zapisuje encje do bazy danych , natomiast metoda **save ** już nie działa ....?????
Pierwszy raz spotkałem się z taką sytuacją aby metoda działała podczas wykonywania testów jednostkowych natomiast nie działała w systemie , nie wiem czy ma to związek z użyciem typów generycznych czy jest inny powód :/
co najśmieszniejsze metoda save nie wyrzuca też żadnych wyjątków ?? A może ma to związek z tworzeniem klucza przez hibernate ??