SimpleXML&休眠不是很好玩吗?

时间:2012-05-06 09:37:35

标签: hibernate struts2 simple-framework

在我的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。

1 个答案:

答案 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(); 

我不确定为什么。我也不确定任何绩效后果