2012-02-07 12 views
17

Grails konsolunda bu kodu çalıştırmak ise:GORM neden nesneyi kaydetmiyor?

def p = new Post(title: "T"); 
p.save(flush: true); // or p.save(); 

Post.count(); 

Gorm özel durumlar atma değil, ancak veri benim DB kaydedilmez. Neyi yanlış yapıyorum?

+0

için

grails.gorm.failOnError=true 

ekleyerek davranışı küresel değiştirmeniz gerekir sadece bağlantı – Topera

cevap

30

Size bir kısıtlama ihlali var olasıdır. Kaydetme yöntemi parametrelerinize failOnError: true ekleyin. Sonra kaydınız başarısız olduğunda bir istisna alırsınız. (Alternatif olarak Kazancınız dönüş değerini kontrol edebilir ve yanlış baskı dışarı p.errors.allErrors(). Ise)

Doğrulama ve birlikte yapılır tasarrufu. Sonra sırayla bazı alan nesnesine bağlı olmuş kullanıcı tarafından gönderilen verileri doğrulayarak Eğer girişini kaydetmek dönüş değerini kontrol yapmanız deyimsel şey geçersiz nedeniyle başarısız kaydetmek için kontrol etmek; geçersiz giriş nedeniyle başarısızlık istisnai bir davranış değildir. Sadece nesnenin içeriğini kaydetmek ve bir sorun varsa, bir istisna almak istiyorsanız, failOnError kullanın. Bunu see this article yapmanız gereken, böylece Gorm tasarlanmış neden mantığı hakkında daha fazlası için

.

+1

1 oluşturduktan sonra Ayrıca alan adı nesne üzerinde 'validate()' kullanabilir ve yanlış döndürür eğer yöntemi '() kaydetmek' oluyor diyoruz YAPMAYIN. Bunun yerine denetleyicinin kullanıcıya bir mesaj döndürmesini sağlayın. –

+0

için yenisini ... :( –

+0

Ya ben set failOnError: true ve istisna yok, nesne Grails tarafından "kaydedilmemiş" olarak işaretlenirken? –

11

Olasılıkla Post bazı kısıt ihlal ediliyor ve böylece nesne kaydediliyor değildir. GORM'in varsayılan davranışının, başarısız bir kaydetmeye atmayacağını unutmayın. Sen benim satırı silmenin oldu başka bir kod parçası vardı ya

p.save(flush: true, failOnError: true); 

gibi diyoruz Ya Benim durumumda senin Config.groovy