в документах grails/gorms, в которой говорится, что вы можете поместить встроенный класс в тот же файл класса домена, что и класс родительского домена верхнего уровня - это работает с точки зрения кода, но по-прежнему генерирует таблицу GeoAddress, а также встраивает столбцы в исходную таблицу. тестовые данные вводятся в место проведения - таблица geoAddress остается пустой.grails v3.2.6/встроенный класс gorm в том же классе domain.groovy создает таблицу Dummy DB
документация подразумевает, что эта встроенная таблица не должна генерироваться. Я могу попытаться переместить GeoAddress в свой собственный файл src/groovy, поэтому его из папки grails-app/domain, но тогда я должен «помнить, что я сделал это». было бы намного «чище» хранить в том же файле, что и содержащий класс.
, кроме как продвинуть GeoAddress обратно в полный класс домена в своем собственном праве - как я могу сказать, что gorm не создает таблицу для него, когда его использование встроено?
мой venue.groovy в Grails-приложении/папка домена
class Venue {
String name
LocalDate dateCreated
LocalDate lastVisited
LocalDate lastUpdated
GeoAddress location
Collection posts
static hasMany = [posts:Post]
static embedded =['location']
static constraints = {
lastVisited nullable:true
location nullable:true, unique:true
posts nullable:true
}
static mapping = {
location cascade: "all-delete-orphan", lazy:false, unique:true
posts sorted: "desc", cascade:"save-update"
}
}
class GeoAddress {
String addressLine1
String addressLine2
String addressLine3
String town
String county
String country = "UK"
String postcode
//adds addTo/removeFrom methods to venue
static belongsTo = Venue
static constraints = {
addressLine1 nullable:true
addressLine2 nullable:true
addressLine3 nullable:true
town nullable:true
county nullable:true
country nullable:true
postcode nullable:true
}
}
чудо, если вы пробовали это как абстрактный класс и будь, что будет работать и держать вещи то же самое попробуйте объявить его как «абстрактный класс GeoAddress» – Vahid
, он, безусловно, не может быть абстрактным классом, так как мне нужно создать экземпляр его для добавления к конструктору места. вы не можете иметь новый(), поэтому я не думаю, что это работает. –
Я не думаю, что вы найдете ответ, который вам нужен, если вы обеспокоены созданием таблиц dbCreate - нужно ли автоматически генерировать базу данных из модели домена - один из «создания-падения», create ',' update 'или' validate 'я предполагаю обновление или, возможно, даже проверять, чтобы не создавать, а затем запускать 'grails export-schema' и вручную создавать таблицы самостоятельно – Vahid