2014-12-05 4 views
2

Я использую grails 2.4.4.Создание столбцов на основе производных графиков в базе данных

У меня есть домен

class Post { 
    Integer nbrOfFavorites 
    static hasMany = [ 
     favorites : Favorite 
    ] 

    static mappings = { 
     nbrOfFavorites formula: '(select count(1) from favorite f where (f.post_id = id))' 
    } 
} 

Проблема заключается в том, что nbrOfFavorites создается в базе данных, поэтому получение не принимать во внимание формулу.

В моем синтаксисе есть что-то не так?

Благодаря

+0

Вы уронили базу данных и начал снова после добавления записи формулы? Если вы запустили приложение перед добавлением опции 'formula', то схема могла сохранить эту переменную в этой таблице ??? – nickdos

+0

Я попробую это в своей среде, но я не могу это сделать в своей производственной среде, есть ли альтернатива? –

+0

плагин для миграции базы данных должен обрабатывать его - http: //grails.org/plugin/database-migration ... если это проблема. – nickdos

ответ

3

Да есть опечатка в синтаксисе. Изменение mappings к mapping, как:

static mapping = { 
    nbrOfFavorites formula: '(select count(1) from favorite f where (f.post_id = id))' 
} 

Ref # Grails Domain: mapping

+0

Вот и все !!! Я не понимаю, как каскад delete работал с этой опечаткой по всему моему проекту: |. большое спасибо –

0

попробуйте добавить это поле в качестве переходного к объекту домена:

class Post { 
Integer nbrOfFavorites 
static hasMany = [ 
    favorites : Favorite 
] 

static mappings = { 
    nbrOfFavorites formula: '(select count(1) from favorite f where (f.post_id = id))' 
} 

static transients = ['nbrOfFavorites'] 
} 
+0

Я уже пробовал это, он не работает. –