# Existiert schon ein DB- Eintrag



## Generic1 (23. Mai 2011)

Hallo,

ich hab glaub ich wieder ein spezielles Problem, 
Ich verwende Hibernate zur kommunikation mit der DB.
Wenn ich ein Tupel in der DB über Hibernate gespeichert habe und dann ein neues Objekt erzeuge, dieses aber noch nicht gespeichert habe und dann diese Methode aufrufe:


```
private Participance isParticipantStillRegisteredForEvent(final Participant participant, final Event event) {
            try {
                final String searchQuery = "select pa from " + EVENT + " e, " + PARTICIPANCE + " pa, " + PARTICIPANT + " p where p = pa.participant and e = pa.event " +
                                           "and pa.participant = ? and pa.event = ?";
                final List<Participance> participanceList = getHibernateTemplate().find(searchQuery, participant, event);
                if(participanceList.size() > 0)
                    return participanceList.get(0);
                else
                    return null;
                }
            catch(Exception e) {
                System.out.println("Exception: " + e);
                return null;
                }
            }
```

dann bekomme ich folgende Exception:


```
org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: at.eventtiming.participant.domain.Participant; nested exception is org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: de.my.company.domain.Participant
```

Jetzt ist mir klar, dass ich einen Participanten angelegt aber noch nicht gespeichert habe, aber ich weiß nicht was ich dagegen tun soll, ich kann ja den neu angelegten Participanten nicht speichern, 
Ich möchte nur abfragen, ob es unter den schon gespeicherten Participanten einen gibt, der mit dem neu angelegten gleich ist. Ich kann auch nicht vor dem erzeugen abfragen ob es schon einen gleichen Participanten gibt, da das erzeugen bei mir eine Factory macht und das Speichern eine Repository- Klasse/Object. 
Weiß jemand wie ich das machen kann? Ich steh momentan ziemlich auf dem Schlauch.
Vielen Dank,
lg


----------



## SlaterB (24. Mai 2011)

frage doch nach
and pa.participant.name = ? 
oder ähnlich eindeutiges und übergib nur die einzelnen Attribute statt das Participant-Objekt an sich


----------

