У меня есть абстрактный класс Event
, который содержит свойства, общие для всех типов событий и под ним. У меня есть два подкласса с одной таблицей в классе (MasterEvent
и ParentEvent
).Grails cast sqltype «number» to String
Проблема заключается в том, что в MasterEvent
столбец id имеет тип «число», а в ParentEvent
он имеет тип «varchar2». Это означает, что, когда я пытаюсь запустить приложение я получаю:
Вызванный HibernateException: Неправильный тип столбца в * для столбца event_id. Найдено: число, ожидаемое: varchar2 (255 символов).
Обратите внимание, что это устаревшая база данных, поэтому нет возможности изменить типы столбцов на уровне базы данных.
В примере кода ниже, должны помочь в понимании лучше:
Event.groovy
package a
abstract class Event {
String id
static mapping = {
tablePerHierarchy "false"
id column: "id"
}
}
ParentEvent.groovy
package a
class ParentEvent extends Event {
static mapping = {
id column: "id"
}
}
MasterEvent.groovy
package a
class MasterEvent extends Event {
static mapping = {
id column: "id", type: "number"
}
}
Я попытался поставить type: number
всевозможные комбинации, но он всегда дает мне ту же ошибку.
Есть ли какой-либо листинг sqlType
прямо на String
или у grails игнорировать эту проверку?
Есть ли ответ на этот вопрос? – Gideon