错误" org.hibernate.HibernateException:找到了多个具有给定标识符的行"

时间:2016-01-12 12:05:20

标签: java mysql hibernate

我对Hibernate有一个奇怪的问题:有时,当我尝试通过ID获取对象时,我得到了#34;找到了具有给定标识符的多个行"。我在catch bloc中发出相同的声明,一切都很完美。 虽然这种解决方法在显式session.get()情况下是可以接受的,但在@ManyToOne解除引用的情况下,我开始收到类似的错误,我无法使用此解决方法。 这是我的代码和输出列表:

import org.hibernate.Session;

import com.dooks.ga.HibernateUtil;
import com.mf.model.network.ethernet.h3c.H3cSwitch;

public class StandaloneChassisFetchTest {

public static void main(String[] args) {
    Session session = HibernateUtil.getSessionWithTransaction();

    String id = "A063D7CC-14E5-48F2-974B-20DDE3A981C6";

    H3cSwitch sw;
    try {
        System.err.println("First try");
        sw = (H3cSwitch) session.get(H3cSwitch.class, id);
    } catch (Exception e) {
        e.printStackTrace();
        System.err.println("Second try");
        sw = (H3cSwitch) session.get(H3cSwitch.class, id);
    }

    System.err.println("Name :" + sw.getDisplayName());
    System.err.println("Type :" + sw.getClass().getSimpleName());

    HibernateUtil.releaseCommitSession(session);
}
}

输出列表

First try
org.hibernate.HibernateException: More than one row with the given identifier was found: A063D7CC-14E5-48F2-974B-20DDE3A981C6, for class: com.mf.model.network.ethernet.h3c.StandaloneH3cSwitch
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:104)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:72)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3917)
at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:460)
at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:429)
at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:206)
at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:262)
at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:150)
at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1091)
at org.hibernate.internal.SessionImpl.access$2000(SessionImpl.java:174)
at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2473)
at org.hibernate.internal.SessionImpl.get(SessionImpl.java:987)
at com.dooks.testing.StandaloneChassisFetchTest.main(StandaloneChassisFetchTest.java:19)
Second try
Name :HP A7500
Type :StandaloneH3cSwitch

Java版本:1.7  Hibernate版本:4.2.0  数据库:MySQL  JDBC驱动程序:mariadb-java-client-1.1.7.jar

我尝试过使用Hibernate 5,并遇到了同样的问题。

我会感激任何见解,因为我完全迷失了!

0 个答案:

没有答案