Hi, there!
I am using hibernate and spring 2, and its UI framework is struts2.
I have an Item class, it has association with User and Category. User could sell item, so item has an foreign key from user. Everything goes fine in unit test, so it is not hbm configuration error. The problem is in struts 2, I got user from Httpsession, not from hibernate session. So it takes user as an transient instance. Why in unit test, user is attached to hibernate session. so it will not try to save user at all. How to attach user to session in struts 2 or in similar situation(I might use struts 1.3).
In Unit test:
==========================
==========
=Unit test======================
==========
=========
public void saveItem() throws Exception {
TransactionSynchronization
Manager.
bindResource(getSessionFac
tory(),new
SessionHolder(getSession()
));
getSession().beginTransact
ion();
Long userid = new Long(5);
User user = (User) getHibernateTemplate().loa
d(User.cla
ss, userid);
Item item = new Item();
item.setSellingUser(user);
Category cat = (Category) getHibernateTemplate().loa
d(Category
.class, new Long(4));
item.addCategory(cat);
item.setName("petri");
item.setDescription("veryg
ood one");
item.setInitprice(40);
getHibernateTemplate().sav
e(item);
getHibernateTemplate().flu
sh();
getSession().getTransactio
n().commit
();
TransactionSynchronization
Manager.un
bindResour
ce(getSess
ionFactory
());
}
==========================
==========
==========
==========
==========
==========
========
In struts 2:
==========================
==========
==========
==========
==========
==========
======
public String execute(){
Item item = new Item();
for (int i=0;i<cid.size();i++){
System.out.println("cid "+i+" is"+cid.get(i));
item.addCategory(getRegist
rationServ
ice().getC
ategoryByI
d(new Long(cid.get(i))));
}
User user = (User) getSession().get("user");
System.out.println("user id is "+user.getUid());
item.setSellingUser(user);
item.setName(name);
item.setDescription(descri
ption);
item.setInitprice(new Integer(initPrice));
getRegistrationService().i
nsertItem(
item);
return SUCCESS;
}
==========================
==========
==========
==========
==========
==========
========
Juhani
Start Free Trial