问题标签 [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 回答
2389 浏览

inheritance - JPA 多重鉴别器值

我们正在建立一个新项目,并决定为 JPA 使用 eclipselink。在创建我们的领域模型时,我们遇到了一个问题。

我们有一个叫做组织的基类。我们还有供应商和客户,它们都扩展了组织。当 JPA 创建表时,我看到它使用了一个鉴别器,问题在于供应商也可以是一个组织。

所以我基本上想要的是(这些是数据库表来获得这个想法):

ERD 显示子类型

一个小例子来帮助澄清这一点:

我们有一个客户叫 SparklingGlass。SparklingGlass 从我们这里购买计算机,因此 SparklingGlass 被保存为我们的客户。我们反过来从 SparklingGlass 购买窗户,因此 SparklingGlass 也是我们的供应商。这就是我们想要在我们的系统中实现的。

这在 JPA 中是否有可能,如果没有,在这些情况下最佳实践是什么?

顺便说一句,我们使用 JOINED 继承类型

0 投票
1 回答
906 浏览

inheritance - JPA eclipselink 加入了没有鉴别器的继承

我们正在为我们的新项目使用 JPA。我们有一个具有判别器的继承关系。

我们正在尝试从我的超类表中删除鉴别器字段,但我们无法弄清楚如何使用 eclipselink 来实现这一点。我们知道这可以通过休眠实现,有谁知道如何通过 eclipselink 实现这一点?

您可能想知道我们为什么要实现这一点(我知道使用鉴别器更快,因为它消除了对其他表的存在检查的需要),这是因为我们尝试实现以下内容:JPA 多个鉴别器值(请参阅问题和答案)。

0 投票
0 回答
484 浏览

grails - 在 mysql 表中,我无法更改鉴别器值

在 grails 中,我有三个类,例如:

1.

2.

3.

在 MySQL 表中,我可以将鉴别器列名获取为Node_Type但无法获取 and 之类的TASK_NODE列值DECISION_NODE

相反,我变得像这样[com.p1.Taskcom.p1.Decision]

0 投票
1 回答
1122 浏览

asp.net-mvc - MVC EF:如果父类是抽象的,则鉴别器字段不会出现

我有一个名为Product的实体:

我有一个叫玩具的产品

如此有效地,玩具就是产品。Product 有自己的属性,但它也有一个名为“ Name ”的抽象属性。孩子知道自己的名字,所以它会覆盖它。

这对我来说似乎很好,但是当我运行 Add-Migration 时(因为我使用的是 EF Code-First),鉴别器字段丢失了。如果删除抽象字段,并使类成为非抽象类,则出现鉴别器字段。

我可以使父类抽象吗?

谢谢!

0 投票
0 回答
553 浏览

hibernate - 如何知道鉴别器的值

首先我要感谢这个论坛的管理员和所有参与它的人,这是我发布的第一个问题,所以让我们以这个与hibernate映射为例,

所以我有一个带有鉴别器值的表,我创建了一个函数,它使用 Hql 从数据库中返回一个项目,我想知道如何知道这个对象的鉴别器值。提前致谢。

0 投票
1 回答
1700 浏览

hibernate - Hibernate 4:部分多对一关联 + where/filter 鉴别器

我正在使用 Hibernate 4。我有这个带有 Category 和 CategoryItem 表的数据库:

这用于存储不同的类别或目录及其值。例如:

类别表:

类别项目表:

这些值在整个架构中使用,但仅对 CategoryItem(Id) 进行逻辑引用,例如:

是否可以在 Hibernate 中使用某种技术映射这些表?我现在无法更改此架构。

编辑:

到目前为止,这些是类和映射:

我正在尝试多对一,但出现此错误:'must have the same number of columns as the referenced primary key'。这是有道理的,因为我假装只在 Person.hbm.xml 上映射 CategoryId(Id)。

我需要指定wherediscriminator值来完成左连接条件,因为 CategoryItem(Id) 本身并不是唯一的。

也许这对于 Hibernate 来说甚至是不可能的,但我将不胜感激。谢谢。

0 投票
1 回答
297 浏览

mysql - 在多租户的情况下如何为自己制作数据库副本

我有带有 mysql 数据库的多租户系统。有基于鉴别器的多租户。每个表都包含列tenantId。我有默认租户,tenantId = -1。对于此默认租户数据库,包含所有新租户的初始数据。

如何为同一数据库中的新租户 ID 复制所有租户 ID = -1 的数据?数据库中有很多表,因此手动编写这样的脚本非常困难。

主要问题:如果我要转储数据库,那么我不能将此转储加载到同一个数据库,因为主键和外键应该是新的。

0 投票
3 回答
917 浏览

grails - 在 Grails 中,我如何获得鉴别器值?

我有这样的课:

有没有办法在控制器/视图中获得这个鉴别器值?

0 投票
0 回答
70 浏览

hibernate - 错误的插入和选择与自我关系多对多

我有一个抽象的超类“视图”

儿童机构班

和一个儿童团体

我保存了 3 个机构。好的。我试图用这三个机构拯救一个团体。这创建了一个新视图(类型 = 2)。但是关系表是这样的:

即用DiscriminatorValue代替GroupInstitution.id(我把DiscriminatorValue改成3,只是测试,关系是用3做的)

注释是错误的?

0 投票
3 回答
775 浏览

grails - 在 Grails 中,如何根据鉴别器在数据库中搜索某些内容?

假设我有以下课程:

我需要实现一个搜索算法,这样,给定一个 JSON 字符串,我可以在数据库中找到一个特定的 Fruit 实例。例如:

或者

问题是,水果可以有相同的名称,所以如果我只是搜索这个:

它可能会返回AppleBanana。我需要能够根据类型过滤它的类型,比如:

我如何在 Grails 中做到这一点?