Grails域[rewards.OnlineOrder]上引用[rewards.OrderItem]的列[order_i



所以我在尝试运行grails应用程序时不断收到主题行错误。以下是我的两个域类,它们似乎是导致错误的原因。

在线订单:

package rewards
class OnlineOrder {
    Date orderDate
    Integer orderNumber
    Float orderTotal
    static belongsTo = [customer:Customer]
    static hasMany = [orderItems:OrderItem]
    static constraints = {
    }
}

订单项目:

package rewards
class OrderItem {
    Integer qty
    Float total
    static belongsTo = [orders:OnlineOrder, product:Product]
    static constraints = {
    }
}

错误读取为:Caused by: org.hibernate.MappingException: Missing type or column for column[order_items_order_item] on domain[rewards.OnlineOrder] referencing[rewards.OrderItem]

看起来好像是在说我还没有定义OrderItem,我在我的OnlineOrder域中将其作为子项引用。但我似乎不明白为什么这会导致一个错误。OrderItem类是在与OnlineOrder相同的目录中创建的,非常简单。

有什么建议吗?

我也遇到了同样的问题,但没有任何意义。

我的解决方案是运行

grails clean

然后再次运行项目

grails -reloading run-app

如果您的项目使用迁移,建议您将数据库置于稳定状态,然后运行以下命令:

grails clean
grails dbm-clear-checksums
grails dbm-update
grails -reloading run-app

我在应用程序中遇到了类似的问题,通过从目标文件夹中删除类文件并重新运行应用程序解决了同样的问题。这个错误通常是因为我更改了我的domino中的属性名称,并在数据库中创建了新的db列。

问候,Raouf

当直接从IDE运行Starter类时,我们也遇到了类似的问题。在对域类进行更改后,IntelliJ进行了make,但没有将所有Grails/Gorm注释放入字节码中。然后GrailsAutoConfiguration不会在scanUsingPattern中加载Artefact。

使用javap查看域的字节码。

对我们来说,运行grails run应用程序似乎要好得多。

我知道这是一个旧线程,但当我向对象添加集合时,我在grails应用程序中也遇到了同样的问题。

发生的事情是,我使用IntelliJ从建议的修复选项中自动创建groovy类。我没有意识到,但它在init下创建了新的类,而不是域。在我把它移到域类之后,一切都很愉快。

尝试:

package rewards
class OrderItem {
    Integer qty
    Float total
    OnlineOrder onlineOrder
    Product product
    static belongsTo = [OnlineOrder, Product]
    static constraints = {
    }
}

请使用BigDecimal而不是Float。

最新更新