有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我对Hibernate有一个奇怪的问题:有时,当我试图通过ID获取对象时,我会得到“找到了多个具有给定标识符的行”。我在catch bloc发布了同样的声明,一切都很完美。 而这种变通方法在显式会话中是可以接受的。get()情况下,在@manytone解引用的情况下,我已经开始收到类似的错误,我无法使用此解决方法。 以下是我的代码和输出列表:

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。罐子

我曾尝试使用Hibernate 5,但也遇到了同样的问题

我会感激任何洞察力,因为我完全迷路了


共 (0) 个答案