2013-10-17 12 views
5

Sana göre adıyla grails.gorm.default.constraints yapılandırma özelliği aracılığıyla varsayılan sınırlamalar ayarlayabilirsiniz biliyoruz? Tüm dizelerimi varsayılan olarak maxSize için varsayılan olarak ayarlamak istiyorum: 2000 (öncelikle varsayılan db eşlemesini varchar'a (255) olmamak için zorlamak için)Grails GORM Dizeleri için varsayılan maxLength ayarlanıyor mu?</p> <pre><code>grails.gorm.default.constraints = { '*'(nullable:true) } </code></pre> <p>ama türüne göre ayarlamak için bir yol yoktur:

cevap

3

Config.groovy'da bunu kolayca yapmanın bir yolu olduğunu sanmıyorum. Yine de çok fazla sorun yaşamadan hazırda bekletme için özel bir lehçe oluşturabilirsiniz. Örneğin (Postgres lehçesini kullanarak):

package mypackage; 

import org.hibernate.dialect.PostgreSQLDialect; 
import java.sql.Types; 

public MyPostgresDialect extends PostgresSQLDialect { 
    public MyPostgresDialect() { 
     super(); 
     registerColumnType(Types.VARCHAR, "text"); 
    } 
} 

Sonra DataSource.groovy güncellemek yeni lehçesini kullanmak:

datasource { 
    ... 
    dialect = mypackage.MyPostgresDialect 
} 
+0

Bu gerçekten iyi bir fikir - Ben tüm bu yaklaşımı düşünmemişti. Sınırsız veri türünü (ör. String) çok kısa sınırlı bir türe (varchar (255)) otomatik olarak bağlamanın otomatik bir sorun olduğunu düşündüm. Heck - hemen hemen tüm modern veri tabanlarının şu anda alan üzerinde çok daha akıllı olduğu göz önüne alındığında (sadece gerekli olanı kullanın) - Ben şaşırmış varcharlar bile sınırlar var - neden çok yüksek bir değerin (örneğin, 8k, 32k, vb) bir üst kapak yapmak, ve bunu kısıtlamak için gerekirse kısıtlamalar kullanın ... ama bu sadece aklıma gelen düşüncelerim ... –

2

Sadece ben bir meslektaş alınan ek bir cevap vermek için - değildi Eğer özelliklerinde bir adlandırma kuralı takip edebilirsiniz eğer ... bu durumda uygulanabilir, ancak başkalarına yardım olabilir

, o zaman bir yapabilirdi:

'*_s': (maxSize:2000) 

Şahsen çapraz isimleri ve veri tiplerini çaprazlamayı sevmiyorum - ama bunu bir yaklaşım olarak eklemek istedim (lehçe ataylor'dan daha çok hoşlandım bile ...)

İlgili konular