HibernateException:找到了多个具有给定标识符的行:111,对于类:TempA

时间:2014-09-03 07:12:57

标签: hibernate

我有一个与TempA实体有关系的实体A,如下所示:

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ID")
private TempA tempA;

然后在doInHibernate中我调用了这个

Criteria c = session.createCriteria(A.class);
c.add(Restrictions.eq("id", code));
Object result = c.uniqueResult();

然后我收到了错误。 TempA是一个共享表,因此其他服务实际上可以插入此表中。我需要的是防止hibernate调用这个TempA。我能够阻止它与A进行左连接,但是,它仍会导致此错误。

1 个答案:

答案 0 :(得分:0)

在开始时 - 加入列的名称不应该是" ID"。 Id列是主对象Id的列。这个应该叫做tempA_id。然后,如果你想得到这个tempA objcet你应该使用

criteria.createAlias(tempA, tempA)告诉hibernate他必须使用join,然后调用类似

的东西
c.add(Restrictions.eq("tempA.id", code));

但更短的版本是:  c.add(Restrictions.eq("tempA", tempA_instance));你可以对所有事物进行对象和休眠操作。