Граальс не генерирует таблицу из-за длинного шарика? - PullRequest
1 голос
/ 06 ноября 2011

Я был озадачен этой проблемой только сейчас.Grails не создает необходимую таблицу, которую я указал в моем домене.Вот что выходит из командной строки после выполнения grails run-app:

        [main] ERROR hbm2ddl.SchemaExport  - Unsuccessful: create table image 
(id bigint generated by default as identity (start with 1), 
version bigint not null, content longblob not null, 
content_type varchar(255), description varchar(255), 
name varchar(255), product_id bigint, size bigint not null, 
type varchar(255) not null, primary key (id))
    2011-11-06 16:25:31,142 [main] ERROR hbm2ddl.SchemaExport  - Wrong data type: 
LONGBLOB in statement [create table image (id bigint generated by default
 as identity (start with 1), version bigint not null, content longblob]

Я считаю, что это как-то связано с моим классом домена.Может ли кто-нибудь указать мне правильное направление?Я использую grails 1.3.7, и вот мой класс домена Image.groovy.

class Image {

    static belongsTo = Product

    Product product

    ImageType   type

    String  name
    String  description
    byte[]  content
    String  contentType
    Long    size

    static constraints = {

        product     nullable: true
        content     nullable: false
        contentType nullable: true, blank: true
        size        min: 0L
        name        nullable: true, blank: true
        description nullable: true, blank: true

    }

    static mapping = {
        content (sqlType: "longblob")
    }


}

Я удивлен, потому что статическое отображение работало с моим другим приложением grails.Так что это может быть что-то еще.

Ответы [ 2 ]

3 голосов
/ 06 ноября 2011

Использование sqlType немедленно сделает вашу базу зависимой. Он будет работать с базами данных, которые знают longblob, но не работает с базами данных, которые не знают этот тип. Вместо этого вы можете объяснить GORM в более общем виде, что ваши данные длиннее, чем обычно:

private static final MAX_IMAGE_SIZE = 1073741824 // 4GB 

static constraints = {
    content(maxSize:MAX_IMAGE_SIZE)
}

Большим преимуществом этого является то, что GORM отобразит тип на longblob, если база данных знает его, и в противном случае он будет отображен в LOB или аналогичный для других: так что он не зависит от базы данных.

0 голосов
/ 06 ноября 2011

решено: я не знаю почему, но я попытался использовать:
static mapping = { content sqlType: 'longblob' }
, и это сработало .. #stupidme: ​​D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...