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: