hibernate Grails域[rewards.OnlineOrder]上的列[Order_Items_Order_Item]缺少引用[rewards.OrderItem]的类型或列

zaq34kh6  于 2022-11-14  发布在  其他
关注(0)|答案(5)|浏览(131)

所以当我试图运行我的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在同一目录中创建,非常简单。
有什么建议吗?

wz1wpwve

wz1wpwve1#

我也有同样的问题,但没有任何意义。
我的解决方案已运行

grails clean

然后再次运行该项目

grails -reloading run-app

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

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

jmp7cifd2#

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

mqxuamgl

mqxuamgl3#

当我们直接从IDE运行Starter Class时,我们遇到了类似的问题。在更改域类之后,IntelliJ执行了make,但没有将所有Grails/GORM注解都放入字节码中。则GrasAutoConfiguration不会在scanUsingPattern中加载伪像。
使用javap查看您的域的字节码。
对于我们这些运行Grails的人来说,Run-app似乎要好得多。

50few1ms

50few1ms4#

我知道这是一个老线程,但当我向对象添加集合时,我在Grails应用程序中遇到了同样的问题。
发生的事情是,我使用IntelliJ从小建议修复选项中自动创建了groovy类。我没有意识到这一点,但它在init下创建了新类,而不是域。在我将它移到域类之后,一切都很顺利。

anauzrmj

anauzrmj5#

尝试:

package rewards

class OrderItem {

    Integer qty
    Float total
    OnlineOrder onlineOrder
    Product product

    static belongsTo = [OnlineOrder, Product]

    static constraints = {
    }
}

并且请使用BigDecimal而不是Float。

相关问题