2014-10-10 1 views
6

Ich benutze Postgres-Datenbank. Nach upgading zu Grails 2.4.3 bekomme ich Datenbank changeset dieser Art für alle booleschen Felder:Unnötige Datenbank changeSet im Zusammenhang mit boolean nach Grails 2.4.3 upgrade

changeSet(author: "me(generated)", id: "1383573084784-1") { 
    addColumn(tableName: "chapter") { 
     column(defaultValue: true, name: "is_framable", type: "boolean") { 
      constraints(nullable: "false") 
     } 
    } 
} 

isFramable ein Chapterboolean Feld in der Domain-Klasse ist. Auch nach dieser Migration läuft es jedes Mal durch dbm-gorm-diff

generiert wird, bemerkte ich, dass es in älteren Versionen von Grails verwendet bool statt boolean in den Changesets sein

I Hibernate Version Mein 4.3.5.5

+0

Wir haben das gleiche Problem, aber noch keine Lösung. Wir ignorieren diese Einträge einfach ... –

+0

Dies kann helfen http://stackoverflow.com/a/14470586 –

+0

Gibt es Neuigkeiten? – AndreyT

Antwort

3

bin mit Abhilfe für das:

Config.groovy

grails.gorm.default.mapping = { 
    "user-type" type: my.hibernate.type.BooleanBitType, class: boolean 
    "user-type" type: my.hibernate.type.BooleanBitType, class: Boolean 
} 

BooleanBitType.java

import my.hibernate.type.descriptor.BooleanBitTypeDescriptor; 
import org.hibernate.type.descriptor.java.BooleanTypeDescriptor; 
import org.hibernate.type.descriptor.sql.SqlTypeDescriptor; 

public class BooleanBitType extends org.hibernate.type.BooleanType { 
    public static final BooleanBitType INSTANCE = new BooleanBitType(); 

    public BooleanBitType() { 
     this(BooleanBitTypeDescriptor.INSTANCE, BooleanTypeDescriptor.INSTANCE); 
    } 

    protected BooleanBitType(SqlTypeDescriptor sqlTypeDescriptor, BooleanTypeDescriptor javaTypeDescriptor) { 
     super(sqlTypeDescriptor, javaTypeDescriptor); 
    } 
} 

BooleanBitTypeDescriptor.java

public class BooleanBitTypeDescriptor extends org.hibernate.type.descriptor.sql.BooleanTypeDescriptor { 
    public static final BooleanBitTypeDescriptor INSTANCE = new BooleanBitTypeDescriptor(); 

    public BooleanBitTypeDescriptor() { 
     super(); 
    } 

    public int getSqlType() { 
     return Types.BIT; 
    } 
} 
0

Bug in grails noch existiert 2.5.4 Postgres Benutzer Ruft schlecht b/c postgres hat keine Entsprechung Bit-Datentyp. Es hat eine Bit-Zeichenkette, die nicht äquivalent ist, um boolesche Werte zu halten. Die Grails-Dokumentation schlägt vor, auf char (1) Y/N-Version von Boolean umzuschalten.

'user-type' (Typ: org.hibernate.type.YesNoType, Klasse: Boolean)

http://grails.github.io/grails-doc/2.5.4/ref/Database%20Mapping/Usage.html

Allerdings habe ich die Idee nicht mögen meine Db-Schema des Biegens Fehler in der App aufnehmen Rahmen.

Also werde ich wahrscheinlich ignorieren diese unnötigen Changesets.

Verwandte Themen