T
Tobias Köhler
Hallo,
ich habe ein Problem beim Insert bestimmter Daten. Ich beschreib dann mal
:
Es gibt eine Charge, diese könnte schon in der DB sein oder nicht- mein Code dazu:
Als Nächstes gibt es hierzu einen Eintrag, der evtl auch schon in der DB sein könnte:
So, und führe ich das aus, kommt dieser Fehler:
Was kann ich tun, damit das nicht mehr passiert?
ich habe ein Problem beim Insert bestimmter Daten. Ich beschreib dann mal

Es gibt eine Charge, diese könnte schon in der DB sein oder nicht- mein Code dazu:
Java:
//----- Charge -----
Charge c = new Charge();
c.setName(d.getCharge());
Query queryCharge = session.createQuery(
"select c from Charge c where c.name = ?");
queryCharge.setString(0, c.getName());
List objectCharge = queryCharge.list();
boolean chargeInTable = false;
if(objectCharge.size()!=0)
{
for(int i=0; i<objectCharge.size(); i++)
{
Charge obj = (Charge) objectCharge.get(i);
if(obj.getName().equals(c.getName()))
{
chargeInTable = true;
c.setId(obj.getId());
break;
}
}
}
if(!chargeInTable)
session.save(c);
else
{
Charge holder = (Charge)session.load(Charge.class, c.getId());
holder = c;
}
Als Nächstes gibt es hierzu einen Eintrag, der evtl auch schon in der DB sein könnte:
Java:
QM q = new QM();
q.setCharge(c);
q.setIga(d.getIga());
q.setIgg(d.getIgg());
q.setIgm(d.getIgm());
q.setBemerkungen(d.getBemerkungen());
Query queryQM = session.createQuery(
"select q from QM q");
List objects = queryQM.list();
boolean qmInTable = false;
if(objects.size()!=0)
{
for(int i=0; i<objects.size(); i++)
{
QM holder = (QM) objects.get(i);
if(holder.getId()==q.getId())
{
qmInTable = true;
q.setId(holder.getId());
break;
}
}
}
if(!qmInTable)
session.save(q);
else
{
QM holder = (QM)session.load(QM.class, q.getId());
holder = q;
}
So, und führe ich das aus, kommt dieser Fehler:
Java:
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [de.lagerverwaltung.entities.QM#5548]
//und zwar andieser Stelle
if(!qmInTable)
session.save(q);
Was kann ich tun, damit das nicht mehr passiert?
Zuletzt bearbeitet von einem Moderator: