2015-08-31 4 views
0
class Donation { 

    BigDecimal amount 

    static constraints = { 
     amount min: BigDecimal.ZERO 
    } 

    static mapping = { 
    } 

} 

После того, домен выглядел следующим образом:Почему переменные свойства сопоставления в домене не генерируют новые строки изменений?

class Donation { 

    BigDecimal amount  

    static constraints = { 
     amount min: BigDecimal.ZERO 
    } 

    static mapping = { 
     amount scale: 4 
    } 

} 

После внесения изменений, я побежал DBM-Горм-диф в консоли Grails, но она не печатается никаких дополнительных строк журнала изменений. Мне было интересно, не изменит ли изменение картографии новые строки изменений. Но, глядя на тип данных «сумма» в базе данных mysql, он показал десятичную (19,2). Я думал, что масштаб 4 изменит тип данных на десятичный (19, 4). Я ценю любую помощь в этой дилемме. Благодаря!

ответ

2

В то время как db-migration может обнаруживать изменения в ваших доменах и может генерировать требуемый журнал изменений, чтобы обновить схему базы данных. Он недостаточно умен, чтобы постоянно находить правильные изменения. В частности, при переименовании таблицы/столбца или изменении типа данных столбца. В таких сценариях вам необходимо выполнить миграцию манулы.

сделать вручную изменения для обновления схемы с помощью DB-миграции:

databaseChangeLog = { 

    changeSet(author: "sandeep (manual)", id: "20150901124635-01") { 
     modifyDataType(columnName: "amount", newDataType: "decimal(19,4)", tableName: "donation") 
    } 
} 

Так всегда, после генерации изменений, проверьте, содержит ли он правильные изменения или нет.

+0

+1 и добавьте некоторые автоматические проверки. У вас есть тесты домена, которые работают против ваших пост-перенастроенных структур, чтобы проверить правильность миграций, не так ли? – railsdog