Я хочу добавить этот объект домена в свое приложение:
class DatatableListviewAvlColumns {
static constraints = {
}
static hasMany = [availableListviewColumns: ListviewColumnDefinition]
static mapping = {
availableListviewColumns cascade: 'all-delete-orphan'
}
Map<String, ListviewColumnDefinition> availableListviewColumns = new HashMap<>()
String datatableName
}
В своем changelog.groovy я добавил следующее:
changeSet(author: "pm", id: "datatable_listview_avl_columns") {
createTable(tableName: "datatable_listview_avl_columns") {
column(name: "id", type: "BIGINT") {
constraints(nullable: "false")
}
column(name: "version", type: "BIGINT") {
constraints(nullable: "false")
}
column(name: "datatable_name", type: "TEXT") {
constraints(nullable: "false")
}
}
}
changeSet(author: "pm", id: "datatable_listview_avl_columns_definition") {
createTable(tableName: "datatable_listview_avl_columns_available_listview_columns") {
column(name: "datatable_listview_avl_columns_id", type: "BIGINT") {
constraints(nullable: "false")
}
column(name: "listview_column_definition_id", type: "BIGINT")
column(name: "available_listview_columns_idx", type: "STRING")
}
}
Когда я запускаю приложение, я получаю исключение:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'methodValidationPostProcessor' defined in class path resource ...... is org.hibernate.MappingException: Missing type or column for column[available_listview_columns_listview_column_definition] on domain[lomnido.DatatableListviewAvlColumns] referencing[com.lomnido.view.ListviewColumnDefinition]
Какая запись в changelog.groovy правильная для данной ситуации? Я никогда раньше не использовал Hashmap с объектом, но я считаю, что это возможно? Или я не прав?
Я удалил hasMany, но ничего не вышло. Какая правильная запись в changelog.groovy для Liquibase
Я нашел свою ошибку. ListViewColumndDefinition не был объектом домена. Так что это не могло сработать.
Вы должны использовать hasMany или поле, попробуйте удалить hasMany и повторите попытку.