TablePerHierarchy 对于抽象类总是 false?

发布于 2024-08-22 14:23:15 字数 491 浏览 5 评论 0原文

根据 Grails GORM 指南,域类的子类与域类共享同一个表。父类,除非 tablePerHierarchy 设置为 false。

我找不到有关是否由于“abstract”关键字而忽略以下映射语句的信息

abstract class Item implements Comparable{
  static mapping = {
    tablePerHierarchy true
  }
...

我的数据库不包含 Item 表,并且每个子类一个表(tablePerHierarchy 的预期状态== false)。

我是否需要使 Item 具体化但在验证中不允许它?我计划有一个 ItemController,其中使用

According to the Grails GORM guide, subclasses of domain classes share the same table as the parent class unless tablePerHierarchy is set to false.

I cannot find information on whether the following mapping statement is ignored because of the "abstract" keyword

abstract class Item implements Comparable{
  static mapping = {
    tablePerHierarchy true
  }
...

My database contains no Item table, and one table per subclass (expected state for tablePerHierarchy==false).

Do I need to make Item concrete but disallow it in validation? I plan to have one ItemController with subclasses selected using a <select> in the create form.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如梦 2024-08-29 14:23:15

我确信您已经解决了这个问题,但是我今天遇到了同样的问题,所以我想我应该插话一下。

在 Grails/Gorm 文档的第 5.2.3 节中,它指出“GORM 支持从抽象基类和具体持久 GORM 实体继承”
(http:// /www.grails.org/doc/1.0.x/guide/5.%20Object%20Relational%20Mapping%20(GORM).html)。

有趣的是,他们在本节的示例中没有提供抽象类的示例。

我尝试在我的层次结构中有一个抽象类(都位于层次结构的顶部,然后再向下一个分支)。每次我尝试持久化一个作为任何抽象子类的对象时,我都会遭遇无声的失败。

我首先从层次结构顶部删除了 Abstract 关键字,并且得到了更积极的结果。最后,我从层次结构中的所有分支中删除了抽象关键字,一切正常。

所以,我的结论是,在实践中,您不能在 Gorm 层次结构中使用抽象关键字。

因此,我计划的层次结构是一些简单数据类型的层次结构,例如:
抽象类型 <- 具体文本 <- 具体 URL
抽象类型 <- 抽象数字 <- 具体积分
抽象类型 <- 抽象数字 <- 具体十进制

必须变成:
具体类型 <- 具体文本 <- 具体 URL
混凝土类型 <- 混凝土数字 <- 混凝土整体
具体类型 <- 具体数字 <- 具体十进制,

即使我无意直接创建类型或数字的实例。

坦白说,我仍然使用 Grails 1.1.2,直到我觉得 1.2 足够稳定为止。

I'm sure you've come to some resolution of this already, but I ran into the same problem today, so I thought I would chime in.

In the Grails/Gorm documentation, section 5.2.3, it states that "GORM supports inheritance both from abstract base classes and concrete persistent GORM entities"
(http://www.grails.org/doc/1.0.x/guide/5.%20Object%20Relational%20Mapping%20(GORM).html).

Interestingly enough, they do not provide an example of an abstract class in the example for this section.

I tried, having an abstract class in my hierarchy, (both at the top of the hierarchy, and then further down one of the branches). Every time I attempted to persist an object that was a subclass of anything abstract, I got silent failure.

I first removed the abstract keyword from the top of the hierarchy, and I got more positive results. Finally, I removed the abstract keyword from all branches in the hierarchy, and everything worked fine.

So, my conclusion is, in practice, it is not true that you can use the abstract keyword in a Gorm hierarchy.

So my planned hierarchy was that of some simple data types for instance:
abstract Type <- concrete Text <- concrete Url
abstract Type <- abstract Numeric <- concrete Integral
abstract Type <- abstract Numeric <- concrete Decimal

Had to become:
concrete Type <- concrete Text <- concrete Url
concrete Type <- concrete Numeric <- concrete Integral
concrete Type <- concrete Numeric <- concrete Decimal

even though I have no intention of creating instances of Type, or Numeric directly.

For disclosure, I'm still using Grails 1.1.2 until I feel 1.2 is stable enough.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文