在我的Web应用程序中,我使用Hibernate和struts2。因为我需要以XML格式发回数据,所以我添加了SimpleXML框架。
我还处于测试阶段。所以我在Store类中添加了注释,这也是由Hibernate生成的POJO类。
我的xml中没有数据。这是我得到的:
<store>
<storeID>0</storeID>
</store>
我期待这个XML:
<store>
<storeID>2</storeID>
<storeName>JC Penny</storeName>
</store>
Store类上的代码如下所示:
/**
* Store generated by hbm2java
*/
@Root(name="store")
@Entity
@Table(name="store"
,catalog="shopperdb"
)
public class Store implements java.io.Serializable {
@Element(name="storeID")
private int id;
@Element(name="storeName" , required=false)
private String name;
@Id
@Column(name="id", unique=true, nullable=false)
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
@Column(name="name", length=45)
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
此处还有我的操作中的代码,它使用hibernate从数据库加载数据并将XML生成到我的日志文件中:
_sess = HibernateUtil.getSessionFactory().getCurrentSession();
if (!_sess.isOpen()) _sess = HibernateUtil.getSessionFactory().openSession();
_tx = _sess.beginTransaction();
Store tempStore = (Store) _sess.load(Store.class, 2);
Serializer serializer = new Persister();
serializer.write(tempStore, System.out);
_tx.commit();
顺便说一句,我从数据库中获取了正确的数据,因为我从这篇文章中得到了一些打印语句。
非常感谢您的帮助,Sal。
答案 0 :(得分:1)
我修好了!似乎在使用Hibernate时,LOAD方法返回的对象(不知何故)与查询LIST方法返回的对象不同。去搞清楚!
所以我更换了以下一行:
Store tempStore = (Store) _sess.load(Store.class, 2);
有了这个:
Store tempStore = (Store)_sess.createQuery("from Store s where s.id=:sid").setInteger("sid", 2).uniqueResult();
我不确定为什么。我也不确定任何绩效后果