问题标签 [discriminator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5797 浏览

c# - 连接子类的 NHibernate 可区分子类

这是我的层次结构:

这是我在两个单独的 hbm 文件中的映射:

以下是我得到的异常:

MappingException:XML 验证错误:命名空间“urn:nhibernate-mapping-2.2”中的元素“joined-subclass”在命名空间“urn:nhibernate-mapping-2.2”中具有无效的子元素“鉴别器”。

我错过了什么?你不能映射一个连接子类的可区分子类层次结构吗?

0 投票
0 回答
507 浏览

hibernate - JPA:我可以在不在同一个实体中的实体属性上定义一个 discriminatorColumn 吗?

鉴于我有与实体 B 具有多对一关系的实体 A。实体 B 具有我想用作实体 A 的某些子类的鉴别器的属性(一种枚举)。我可以用常见的 JPA 定义它吗和/或休眠注释或者我是否需要创建实体 B 的区分版本来创建这种关系?

干杯,凯

0 投票
1 回答
811 浏览

hibernate - 子类中的休眠/休眠鉴别器

我有一个带有鉴别器的子类,我可以在一个子类中有另一个鉴别器吗?
我将尝试解释
一个鉴别器在 Person 表中可能是类型,我有两个子类 Student 和 Teacher,在一个学生子类中我有不同的学生子类基于学生记录中的不同列。
现在我正在使用带有鉴别器的连接子类,但我无法在子类中进行区分

0 投票
2 回答
321 浏览

hibernate - 使用 Hibernate 的一种类型和另一种类型的子类之间的一对一关系

使用 Hibernate,我试图在一个固定域类型 A 和另一个域类型 B 之间实现一对一的关系,后者的类型是实现某个接口的任何类型。

情况:

该系统具有三种不同的域类型;Country、Warehouse 和 Store,它们实现了一个接口 FlagSubscriber。

我想通过 Flags 加入 FlagSubscribers。每个标志可以与 0 或 1 个标志订阅者配对。

执行:

在数据库中,我有 Country、Warehouse、Store 和 Flag 的表,每个表都有一个 ID 列和用于其特定属性的各种其他列。为了将 Flags 与 FlagSubscribers 配对,我创建了一个链接表,如下所示:

  • flag_id
  • 订阅者 ID
  • 订阅者类型

id 字段是不言自明的,subscriber_type 是一个文本字段,用于确定subscriber_id 是否与国家、仓库或商店相关。

问题:

使用 Hibernate 注解,我如何告诉 Hibernate 如何在 Flag 类中映射 FlagSubscribers?

我认为我需要使用鉴别器,但我不确定如何针对我的特定情况执行此操作,或者即使可能。

任何指向示例、建议或想法的指针都将受到欢迎!

0 投票
1 回答
1920 浏览

nhibernate - 使用 NHibernate 在没有鉴别器的情况下为每个类层次结构保留一个表?

我有一个接口和一个实现这个接口的类。

现在,使用 NHibernate 2.1.2.GA,我希望使用一个 table-per-class-hierarchy 来映射接口及其实现者,事实上,我不需要鉴别器,因为这个实现者将是唯一持久化的类在这个表中。我已经有大约一年半没有使用 NHibernate 了,而且我在这里遇到了一些记忆空白......

我已经阅读了这个相关的问题和答案,除了我没有使用 FNH。
NHibernate 映射:将层次结构保存到没有鉴别器的单个表

  1. 我想知道该discriminator属性在使用时是否是强制性的subclass

  2. 在这个特定的上下文中,我的 XML 映射应该是什么样子?

感谢您的帮助!

0 投票
6 回答
23688 浏览

php - 教义 2 - 如何在 where 子句中使用鉴别器列

我在 where 子句中使用了鉴别器列,如下所示:

我有一个错误:“消息:[Semantical Error] line 0, col 73 near 'format = 'image'': Error: Class Entities\File\AbstractFile has no field or association named format”

如何在 where 子句中使用鉴别器列?

谢谢。

0 投票
2 回答
2880 浏览

entity-framework - 无法重命名 Entity Framework 4.1 Code First 数据库中的鉴别器列

我有这样的模型层次结构配置:

这导致 A 和 B 的 TPH 和 C 的 TPT。到目前为止,这似乎工作正常。生成了两个数据库表:“A”包含 A 和 B 模型记录,“C”仅包含尚未保存在表“A”中的 C 模型记录列。

对于表 A 上的 TPH 排列,有一个生成的“Discriminator”列,EF CF 自己创建该列来区分 A 型和 B 型。该列很好且符合预期;但是,我想重命名它。为了这篇文章,新名称可能是“类型”。

记录如何执行此操作的教程似乎暗示了这一点:

但是,这似乎不起作用,因为我在数据库生成期间遇到运行时错误,说 A、B 和 C 类型的模型正在添加到同一个表中,并且“可以使用映射条件来区分行这些类型映射到。” (不管这意味着什么。)

我也试过:

.. 也 ..

..即使这些尝试编译并没有产生运行时错误,似乎也没有任何效果,因为鉴别器列仍然是“鉴别器”。

我尝试在 A 上创建一个名为“Discriminator”的新字符串属性,随后我将重命名该属性的列元数据,但这只是给了我两个“Discriminator”列:“Discriminator”和“Discriminator1”。

想法?

0 投票
1 回答
158 浏览

c# - 如何使鉴别器表更有用

我正在尝试从本文中复制此表结构

http://grabbagoftimg.s3.amazonaws.com/nhib_disc_01.PNG

这是我的 POCO 和映射。

POCO的

映射:

这个问题是它生成我的Status表是这样的:

Id....项目状态

1.....1

2.....2

正如你所看到的,这是相当无用的,因为两列总是包含相同的值。

如何复制我上面链接的图像?

0 投票
2 回答
2882 浏览

hibernate - Hibernate JPA 鉴别器列未附加到生成的查询

我有一个使用 DiscriminatorColumn 的抽象实体,并由各种实体子类化。现在,当我在抽象类中查询命名查询时,它会抛出一个错误,说“org.hibernate.InstantiationException 无法实例化抽象类或接口”。经过分析,我发现鉴别器列未附加在生成的本机 SQL 本身中。以下是实体映射的简化版本:


0 投票
1 回答
2568 浏览

inheritance - Grails继承映射中的鉴别器问题

我有 4 个类 A、B、B1、B2,其继承映射描述如下:
A(映射到表 A)是最顶层的父类,它的继承映射策略是tablePerHierarchy=false(意味着它的每个子类都映射到一个单表)。
B类从A扩展,B1,B2从B扩展。但是B1和B2与B共享同一张表,所以在B类中,我声明tablePerHierarchy=true了一个区分B1和B2的鉴别器。
详细代码在这里:

当我启动我的应用程序时,发生了一个错误:

我已经按照 Grails 文档中关于鉴别器的说明(http://grails.org/doc/latest/ref/Database%20Mapping/discriminator.html),但它没有用。我在这里找到了关于此文档问题的 JIRA:http: //jira.grails.org/browse/GRAILS-5168并在他们评论时修复了我的代码,但仍然出现相同的错误。

我不知道导致此问题的原因。B 中的 tablePerHierarchy=true 是否覆盖了 A 中定义的策略?
你能帮我解决这个问题吗?太感谢了。