Hallo zusammen,
ich habe vergeblich versucht eine save()-Methode zu testen, aber leider scheitert mein JUnit-Test.
Es geht um die DAO-Methode HibernateTemplate().save(user) aus dem Spring Framework, diese Methode soll das Objekt user in der Datenbank speichern und anschließend den generierten Primärschlüssel zurückgeben:
Die Dao-Klasse :
public class UserDao extends HibernateDaoSupport implements UserI{
.....
.....
public Integer saveUser(aUser) {
LOG.debug("flush mode: "+ getHibernateTemplate().getFlushMode());
return (Integer) getHibernateTemplate().save(aUser);
}
public User getUser(Integer id) {
return (User)getHibernateTemplate().get(User.class, id);
}
}
}
Die TestKlasse:
public class TestUserDaoImpl extends AbstractTransactionalDataSourceSpringContextTests{
private UserI userI;
private SessionFactory sessionFactory;
private static final Logger LOG = Logger.getLogger(TestUserDaoImpl.class);
public void setUserI(UserI aUser) {
this.UserI=aUser;
}
public void setSessionFactory(SessionFactory aSessionFactory) {
this.sessionFactory = aSessionFactory;
}
//Die Test-Methode
public void testSaveUser(){
User user=new User();
user.setUserName("XXX");
Date datum =new java.util.Date();
user.setDate(datum);
System.out.println("der id vor der Persistierung ist "+user.getUserId());
assertNull("id nicht null?", userf.getUserId());
Integer res=UserI.saveUser();
System.out.println("Der id nachdem Insert ist "+res.toString());
assertNotNull("id null?", user.getUserId());
}
protected String[]getConfigLocations(){
return new String[]{"applicationContext.xml"};
}
}
Als Rückgabewert bekomme ich immer eine 0, aber in der Datenbank sieht es so aus, dass die Primärschlüssel, die durch auto-increment generiert wurden, verbraucht sind..
D.h. wenn ich manuell einen Datensatz hinzufüge, wird nicht der nächst größere Schlüssel genommen, sondern der übernächste...
Und die getHibernateTemplate().get() funktioniert.
Was habe ich da falsch gemacht?
Es würde mich sehr freuen, wenn jemand mir helfen könnte, danke im voraus.
Mahosand
ich habe vergeblich versucht eine save()-Methode zu testen, aber leider scheitert mein JUnit-Test.
Es geht um die DAO-Methode HibernateTemplate().save(user) aus dem Spring Framework, diese Methode soll das Objekt user in der Datenbank speichern und anschließend den generierten Primärschlüssel zurückgeben:
Die Dao-Klasse :
public class UserDao extends HibernateDaoSupport implements UserI{
.....
.....
public Integer saveUser(aUser) {
LOG.debug("flush mode: "+ getHibernateTemplate().getFlushMode());
return (Integer) getHibernateTemplate().save(aUser);
}
public User getUser(Integer id) {
return (User)getHibernateTemplate().get(User.class, id);
}
}
}
Die TestKlasse:
public class TestUserDaoImpl extends AbstractTransactionalDataSourceSpringContextTests{
private UserI userI;
private SessionFactory sessionFactory;
private static final Logger LOG = Logger.getLogger(TestUserDaoImpl.class);
public void setUserI(UserI aUser) {
this.UserI=aUser;
}
public void setSessionFactory(SessionFactory aSessionFactory) {
this.sessionFactory = aSessionFactory;
}
//Die Test-Methode
public void testSaveUser(){
User user=new User();
user.setUserName("XXX");
Date datum =new java.util.Date();
user.setDate(datum);
System.out.println("der id vor der Persistierung ist "+user.getUserId());
assertNull("id nicht null?", userf.getUserId());
Integer res=UserI.saveUser();
System.out.println("Der id nachdem Insert ist "+res.toString());
assertNotNull("id null?", user.getUserId());
}
protected String[]getConfigLocations(){
return new String[]{"applicationContext.xml"};
}
}
Als Rückgabewert bekomme ich immer eine 0, aber in der Datenbank sieht es so aus, dass die Primärschlüssel, die durch auto-increment generiert wurden, verbraucht sind..
D.h. wenn ich manuell einen Datensatz hinzufüge, wird nicht der nächst größere Schlüssel genommen, sondern der übernächste...
Und die getHibernateTemplate().get() funktioniert.
Was habe ich da falsch gemacht?
Es würde mich sehr freuen, wenn jemand mir helfen könnte, danke im voraus.
Mahosand