问题标签 [mappedsuperclass]

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 投票
0 回答
48 浏览

php - 是否可以覆盖 Doctrine Entity 中的表名?

我正在使用 Doctrine ORM。
尝试从数据库中获取数据时出现此错误:
Fatal error: Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'db.GenericMeasurements' doesn't exist

生成错误的代码:

它进入 getValues() 并在尝试执行 sql 时生成错误。我试图用 AssociationOverride 做一些事情,但似乎我无法覆盖表名。

通用测量.php

DS18B20Measurements.php

通用传感器.php

0 投票
1 回答
107 浏览

java - 如何在 JPA 查询语法中引用映射的超类字段?

我有一个包含多个映射超类的类

我正在尝试按某些嵌套字段进行选择、搜索和分组。一开始我发现我可以参考嵌套字段。

我尝试了类似的变化

但因各种错误而失败。这些语法是指映射超类中的字段吗?

数据库本身是正常创建的。

Getter 存在并自动创建Lombok(参见@Data注释)。

我不希望使用本机查询。

0 投票
1 回答
210 浏览

java - 使用 Hibernate EntityManager 获取映射超类的实例

我在处理 Hibernate 中的映射超类时遇到了一些问题。我有两个应用程序,产品和制造商,它们共享一个公共库,但彼此之间没有任何直接依赖关系。Common lib 有一个抽象的 MappedSuperclass (common.domain.Manufacturer),它是基本实体。制造商有一个扩展通用类的具体类。Product 中没有该类的具体版本。

最初,我什至无法编译它,因为 common.domain.Manufacturer 没有被识别为实体。我可以通过我的 ORM 配置定义实体映射来解决这个问题(有关更多详细信息,请参阅:处理映射超类中的休眠持久性)。虽然这确实解决了编译问题,但不幸的是我在运行时仍然看到错误。当我在映射的超类上调用 entityManager.find() 时,它失败并出现错误: org.hibernate.InstantiationException: Cannot instantiate abstract class or interface: : com.tura.common.domain.Manufacturer

我想也许我可以使用 entityManager.getReference() 而不是 find()。只要我实际上不需要除主键之外的任何有关制造商的信息,它就可以工作。不幸的是,代码中有几个地方我需要一些关于制造商的额外信息。一旦我访问 Id 以外的任何字段,它就会失败并出现相同的错误。

我现在可以看到三个选项,但它们都有我想避免的缺点。我可以使该类的 Common 版本具体化,但这会破坏首先具有此层次结构的目的。我不希望通用版本被实例化并可能持久化。只有制造商应用程序应该这样做。我可以在 Product 应用程序中创建一个具体的类,但这需要向数据库添加一个在休眠之外没有意义的 DTYPE。最后也是最糟糕的选择是让 Product 和 Manufacturer 具有直接依赖关系。除非用尽所有其他可能性,否则我什至不会考虑。

我觉得必须有一些干净的方式来做我需要的事情。任何帮助将不胜感激。

0 投票
0 回答
45 浏览

java - 为什么在测试扩展实体时休眠说类没有ID?

我正在尝试建立一个 h2 数据库进行测试。问题是当我尝试运行测试时出现错误: ids for this class must be manually assigned before calling save()即使超类具有 id。这只是一个糟糕的实体设计还是我的配置有问题?

超类:

子类:

我的配置:

0 投票
2 回答
51 浏览

java - 所有实体的 JPA MappedSuperClass 通用审计值

我有几个 JPA 实体,每个实体都有一个数据库用户列,在该列中我必须存储对表中特定行进行更改的用户。

我创建了一个'MappedSuperclass' Bean,所有实体都将从中扩展,这就是 MappedSuperclass。

这是一个从“MappedSuperclass”扩展而来的实体。

并且,所有的 Bean 都有一个对应的服务方法,用于将数据保存在数据库中,这是服务类之一(每个服务注入一个用于 CRUD 操作的存储库)。

当“repository.save()”(第 3 行)执行时,它成功存储了用户,但我将用户逻辑放在执行保存方法之前(第 1、2 行)。所以我不认为在每个服务上重复这两行是最好的方法,相反,我想实现一个通用方法或一个通用类,在执行保存方法之前为所有 Bean 实体设置用户。

那可能吗?什么是更好的方法?

我想实现这样的东西,但不知道如何使它通用?

0 投票
0 回答
13 浏览

inheritance - 在扩展的具体类中指定父类的 Doctrine targetEntity

TenantUserProjectMember两者VendorUserProjectMember都有一个$user属性,但它们有不同的 targetEntities。这两个类都扩展了 MappedSuperclass AbstractUserProjectMember。虽然未显示,但此$user属性具有其他属性,我想在其中定义一次AbstractUserProjectMember并覆盖具体类中的关联。

我尝试了以下方法,但得到了错误关联TenantUserProjectMember#userVendorUserProjectMember#user引用了AbstractUser#projectMembers不存在的反向字段。请注意,我不能添加 a $projectMembersAbstractUser因为并非所有扩展类都具有这样的属性。

是否可以在扩展的具体类中指定父级的 targetEntity,如果可以,如何指定?