2013-10-04 15 views
5

Mam domenę następująco:Grails/Hibernacja: No wiersz z danym identyfikatorem

class Author { 
    String id 
    static hasMany = [accounts: Account] 
    static belongsTo = Account 
    static mapping = { 
     accounts joinTable: [name: "SOMETABLE", key: 'SOMEFIELD'], 
       ignoreNotFound: true 
    } 
    static constraints = {} 
} 

otrzymuję następujący błąd, gdy nie znaleziono rekordu. Próbowałem ignoreNotFound, to nie działa.

error message: accounts=org.hibernate.ObjectNotFoundException: 
No row with the given identifier exists: 
[com.myapplication.Account#123465489785] 

Zdarza się, gdy próbuje wybrać 2 dołączyć rekordy, które nie mają dostępu do wstawienia w db. Czy istnieje obejście problemu?

Odpowiedz

2

Oznacza to, że nie ma wiersza w tabeli Account o identyfikatorze 123465489785. Twój autor ma konto o identyfikatorze 123465489785. Hibernate nie może go znaleźć, więc zgłasza wyjątek. jeśli jego nowe konto powoduje, że identyfikator na koncie ma wartość null, tak aby hibernacja znała nowy wiersz.

+0

Rozumiem, że oznacza to, że nie istnieje żaden wiersz w tabeli Autor. Ale czy istnieje sposób, aby poprosić grailsów, aby to zignorowali? Czy możemy powiedzieć, aby grails właśnie zwrócili pustą listę? – user2679352

+1

co próbujesz zrobić? zapisać autora? –

+0

To jest starsza baza danych. Właśnie czytam płytę. Nie aktualizujemy żadnych rekordów. Istnieje relacja wiele do wielu, dlatego musiałem określić joinTable. – user2679352