【发布时间】:2012-12-06 09:05:29
【问题描述】:
我有一个通过休眠连接到数据库的表单。使用此表单,用户可以进入并填写姓名、地址和电子邮件信息等字段。填写完信息后,他们将提交表单。提交后,所有信息将显示在同一页面的数据表中。
我正在使用会话与数据库进行交互。但是,从数据库中填充的数据似乎不正确。
public void somefunction() {
//The sessionfactory is being configured in another class
Session s = sessionFactory.openSession();
Transaction tx= null;
try {
tx= s.beginTransaction();
List userInformation = s.createQuery("FROM database1 WHERE PKEY ='"+somevalue+"'").list();
for(Iterator iterator = userInformation.iterator; iterator.hasNext();){
//database1 is an entity bean
database1 x = (database1) iterator.next();
System.out.print(x.getName());
}
tx.commit();
}
catch(Exception) {......}
finally {.....}
}
在用户提交第一个“用户”及其信息后,所有内容都会显示在数据表中。但是,当他们输入第二个“用户”时,数据表上显示的行与第一个用户的信息相同,即使数据不同。我认为代码看起来是正确的,所以我不确定这可能有什么问题。
【问题讨论】:
-
迭代前检查列表大小?
-
上面的代码看起来没问题。你能分享你的原始代码sn-p吗?我怀疑这是一些对象引用问题。
-
@user1817081 我在您的查询中没有看到任何主键。更改对象的名称(掩码)以保持机密性,但发布确切的 sn-p(不要共享完整代码)。我怀疑您可能在某处使用相同的对象引用。
-
@user1817081 我认为objectA是一个实体引用,为什么它是由objectA转换的?
-
@Mohammod 代码已更新。
标签: java hibernate loops iterator