在grails域类中使用继承
我有每月的域类来按月将事务划分为[TxnSummaryJan,TxnSummaryFeb..等]。现在我正在尝试创建一个月域类,它是抽象的,并且在其中定义了所有字段,这样Jan、Feb类就可以扩展这个类了。 现在我已经设定了目标 tablePerHierarchy=0 在month类的映射中,这样grails就不会为此类创建表 现在表被正确地创建了,但是当我执行在grails域类中使用继承,grails,groovy,gorm,Grails,Groovy,Gorm,我有每月的域类来按月将事务划分为[TxnSummaryJan,TxnSummaryFeb..等]。现在我正在尝试创建一个月域类,它是抽象的,并且在其中定义了所有字段,这样Jan、Feb类就可以扩展这个类了。 现在我已经设定了目标 tablePerHierarchy=0 在month类的映射中,这样grails就不会为此类创建表 现在表被正确地创建了,但是当我执行 Month.createCriteria().get( eq('userid',1)).list() 它给我的错误是get()函数
Month.createCriteria().get( eq('userid',1)).list()
它给我的错误是get()函数对Month类不可用。但是当我举个例子的时候它就运行了
TxnSummaryJan.createCriteria().get(eq('userid',1)).list()
因为根据域模型,我应该在查询基类时得到结果,所以这里缺少什么
还有,在哪里放置月份域类?我是否需要将月份域放置在src/Domain之外,以便不创建其表 问候
Priyank当使用tablePerHierarchy=false时,这也意味着不会创建基表。相反,它将每月创建一个表。对Month进行查询的唯一方法是对Month的所有特定子类进行查询,然后以某种方式合并结果。我认为这在GORM中是可能的,但也意味着奇怪/复杂的查询可能会出现意想不到的性能问题 如果您的设计意图是不在数据库中创建基表,那么只需将基类移动到src/groovy并将其标记为抽象。然后将tablesPerHierarchy设置为true,因为它是默认值。这样,您的所有数据都会在一个表中结束,但您可以一次访问所有数据
请参阅以供参考 当使用tablePerHierarchy=false时,这也意味着不会创建基表。相反,它将每月创建一个表。对Month进行查询的唯一方法是对Month的所有特定子类进行查询,然后以某种方式合并结果。我认为这在GORM中是可能的,但也意味着奇怪/复杂的查询可能会出现意想不到的性能问题 如果您的设计意图是不在数据库中创建基表,那么只需将基类移动到src/groovy并将其标记为抽象。然后将tablesPerHierarchy设置为true,因为它是默认值。这样,您的所有数据都会在一个表中结束,但您可以一次访问所有数据 请参阅以供参考