illegal versucht, zu assoziieren ein proxy mit zwei offenen Sitzungen

wie Sie diese Fehler beheben und was am besten mit sessions in hibernate sind in einer session und multi-Transaktionen in allen Anwendungs-oder das, was ich Tue, ist gut, überprüfen Sie bitte folgenden code

und ich hoffe, Sie geben mir die Antwort mit dem richtigen code, und wie stellen Sie es in einer Sitzung, wenn es die beste Möglichkeit

dieser Fehler

Exception in thread "AWT-EventQueue-0" org.hibernate.HibernateException: illegally attempted to associate a proxy with two open Sessions
at org.hibernate.proxy.AbstractLazyInitializer.setSession(AbstractLazyInitializer.java:112)
at org.hibernate.engine.internal.StatefulPersistenceContext.reassociateProxy(StatefulPersistenceContext.java:595)
at org.hibernate.engine.internal.StatefulPersistenceContext.unproxyAndReassociate(StatefulPersistenceContext.java:642)
at org.hibernate.event.internal.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:90)
at org.hibernate.event.internal.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:74)

den hibernate-Transaktionen und implementiert

Session session = HibernateUtil.getSessionFactory().openSession();

Query query = null;
Transaction transaction = null;

@Override
public void delete(Car o) {
    transaction = session.beginTransaction();
    session.delete(o);
    transaction.commit();

}

@Override
public List<Car> findAll() {
    List<Car> carsList = new ArrayList<Car>();
    try {
        query = session.createQuery("from Car");
        carsList = query.list();
        for (Iterator iterator = carsList.iterator(); iterator.hasNext(); ) {
            Car car = (Car) iterator.next();
        }
    } catch (HibernateException he) {
        he.printStackTrace();
    } finally {

    }
    return carsList;
}

@Override
public Car findById(int id) {
    query = session.createQuery("from Car where id=:id");
    query.setParameter("id", id);
    Car car = (Car) query.list().get(0);
    return car;
}

@Override
public void insert(Car o) {
    transaction = session.beginTransaction();
    session.save(o);
    transaction.commit();
}

@Override
public void update(Car o) {
    transaction = session.beginTransaction();
    session.update(o);
    transaction.commit();
}

@Override
public List<Car> findByCarLicense(CarLicense carLicense) {
    List<Car> carsList = new ArrayList<Car>();
    try {
        query = session.createQuery("from Car where carLicense=:carLicense");
        query.setParameter("carLicense", carLicense);
        carsList = query.list();
        for (Iterator iterator = carsList.iterator(); iterator.hasNext(); ) {
            Car car = (Car) iterator.next();
        }
    } catch (HibernateException he) {
        he.printStackTrace();
    } finally {

    }
    return carsList;
}

@Override
public List<Car> findByPruCompany(PruCompany pruCompany) {
    List<Car> carsList = new ArrayList<Car>();
    try {
        query = session.createQuery("from Car where pruCompany=:pruCompany");
        query.setParameter("pruCompany", pruCompany);
        carsList = query.list();
        for (Iterator iterator = carsList.iterator(); iterator.hasNext(); ) {
            Car car = (Car) iterator.next();
        }
    } catch (HibernateException he) {
        he.printStackTrace();
    } finally {

    }
    return carsList;
}

@Override
public List<Car> findByTypy(String type) {
    List<Car> carsList = new ArrayList<Car>();
    try {
        query = session.createQuery("from Car where type=:type");
        query.setParameter("type", type);
        carsList = query.list();
        for (Iterator iterator = carsList.iterator(); iterator.hasNext(); ) {
            Car car = (Car) iterator.next();
        }
    } catch (HibernateException he) {
        he.printStackTrace();
    } finally {

    }
    return carsList;
}

@Override
public List<Car> findByModel(String model) {
    List<Car> carsList = new ArrayList<Car>();
    try {
        query = session.createQuery("from Car where model=:model");
        query.setParameter("model", model);
        carsList = query.list();
        for (Iterator iterator = carsList.iterator(); iterator.hasNext(); ) {
            Car car = (Car) iterator.next();
        }
    } catch (HibernateException he) {
        he.printStackTrace();
    } finally {

    }
    return carsList;
}

@Override
public List<Car> findByColor(String color) {
    List<Car> carsList = new ArrayList<Car>();
    try {
        query = session.createQuery("from Car where color=:color");
        query.setParameter("color", color);
        carsList = query.list();
        for (Iterator iterator = carsList.iterator(); iterator.hasNext(); ) {
            Car car = (Car) iterator.next();
        }
    } catch (HibernateException he) {
        he.printStackTrace();
    } finally {

    }
    return carsList;
}

@Override
public List<Car> findByNumber(String number) {
    List<Car> carsList = new ArrayList<Car>();
    try {
        query = session.createQuery("from Car where number=:number");
        query.setParameter("number", number);
        carsList = query.list();
        for (Iterator iterator = carsList.iterator(); iterator.hasNext(); ) {
            Car car = (Car) iterator.next();
        }
    } catch (HibernateException he) {
        he.printStackTrace();
    } finally {

    }
    return carsList;
}

@Override
public List<Car> findByKilos(Double kilos) {
    List<Car> carsList = new ArrayList<Car>();
    try {
        query = session.createQuery("from Car where kilos=:kilos");
        query.setParameter("kilos", kilos);
        carsList = query.list();
        for (Iterator iterator = carsList.iterator(); iterator.hasNext(); ) {
            Car car = (Car) iterator.next();
        }
    } catch (HibernateException he) {
        he.printStackTrace();
    } finally {

    }
    return carsList;
}

@Override
public List<Car> findByAvalibity(String avalibity) {
    List<Car> carsList = new ArrayList<Car>();
    try {
        query = session.createQuery("from Car where avalibity=:avalibity");
        query.setParameter("avalibity", avalibity);
        carsList = query.list();
        for (Iterator iterator = carsList.iterator(); iterator.hasNext(); ) {
            Car car = (Car) iterator.next();
        }
    } catch (HibernateException he) {
        he.printStackTrace();
    } finally {

    }
    return carsList;
}

@Override
public Car findByChassisNumber(String chassisNumber) {
    query = session.createQuery("from Car where chassisNumber=:chassisNumber");
    query.setParameter("chassisNumber", chassisNumber);
    Car car = (Car) query.list().get(0);
    return car;
}

und HibernateUtil

private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
    try {
        SessionFactory sessionFactory = new Configuration().configure(
                "/com/core/util/hibernate.cfg.xml").buildSessionFactory();
        return sessionFactory;
    } catch (Throwable ex) {
        System.err.println("Initial SessionFactory creation failed." + ex);
        throw new ExceptionInInitializerError(ex);
    }
}
public static SessionFactory getSessionFactory() {
    return sessionFactory;
}
public static void shutdown() {
    getSessionFactory().close();
}
  • Meist jedes mal wenn Sie tun, ein transaction.commit sollten Sie schließen Sie Ihre Sitzung...
  • sind diesem Recht Gebrauch transaction.commit und mein Weg richtig ist
  • ich versuche, in der Nähe Sitzung noch Fehler haben
  • eine andere Sache, ist offtopic, was wollen Sie tun, alle Ihre for()? Für das, was ich sehe, tun Sie nichts, warum nicht Sie Sie entfernen?
  • wenn ich entfernen 'für ()', wie Objekt-und bitte schreiben Sie diese Klasse von beste Weg, um zu lernen, vielen Dank
  • Sie erhalten Ihre Objekte, wenn Sie anrufen query.list()
  • bitte schreiben Sie diese Klasse durch die beste Art und Weise und zu optimieren, es zu lernen, ich bin frisch in den Ruhezustand und ich danke Ihnen so so Brei

InformationsquelleAutor | 2015-07-21
Schreibe einen Kommentar