问题标签 [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.
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
java - 如何在 JPA 查询语法中引用映射的超类字段?
我有一个包含多个映射超类的类
我正在尝试按某些嵌套字段进行选择、搜索和分组。一开始我发现我可以参考嵌套字段。
我尝试了类似的变化
但因各种错误而失败。这些语法是指映射超类中的字段吗?
数据库本身是正常创建的。
Getter 存在并自动创建Lombok
(参见@Data
注释)。
我不希望使用本机查询。
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 具有直接依赖关系。除非用尽所有其他可能性,否则我什至不会考虑。
我觉得必须有一些干净的方式来做我需要的事情。任何帮助将不胜感激。
java - 为什么在测试扩展实体时休眠说类没有ID?
我正在尝试建立一个 h2 数据库进行测试。问题是当我尝试运行测试时出现错误: ids for this class must be manually assigned before calling save()
即使超类具有 id。这只是一个糟糕的实体设计还是我的配置有问题?
超类:
子类:
我的配置:
java - 所有实体的 JPA MappedSuperClass 通用审计值
我有几个 JPA 实体,每个实体都有一个数据库用户列,在该列中我必须存储对表中特定行进行更改的用户。
我创建了一个'MappedSuperclass' Bean,所有实体都将从中扩展,这就是 MappedSuperclass。
这是一个从“MappedSuperclass”扩展而来的实体。
并且,所有的 Bean 都有一个对应的服务方法,用于将数据保存在数据库中,这是服务类之一(每个服务注入一个用于 CRUD 操作的存储库)。
当“repository.save()”(第 3 行)执行时,它成功存储了用户,但我将用户逻辑放在执行保存方法之前(第 1、2 行)。所以我不认为在每个服务上重复这两行是最好的方法,相反,我想实现一个通用方法或一个通用类,在执行保存方法之前为所有 Bean 实体设置用户。
那可能吗?什么是更好的方法?
我想实现这样的东西,但不知道如何使它通用?
inheritance - 在扩展的具体类中指定父类的 Doctrine targetEntity
TenantUserProjectMember
两者VendorUserProjectMember
都有一个$user
属性,但它们有不同的 targetEntities。这两个类都扩展了 MappedSuperclass AbstractUserProjectMember
。虽然未显示,但此$user
属性具有其他属性,我想在其中定义一次AbstractUserProjectMember
并覆盖具体类中的关联。
我尝试了以下方法,但得到了错误关联TenantUserProjectMember#user
并VendorUserProjectMember#user
引用了AbstractUser#projectMembers
不存在的反向字段。请注意,我不能添加 a $projectMembers
,AbstractUser
因为并非所有扩展类都具有这样的属性。
是否可以在扩展的具体类中指定父级的 targetEntity,如果可以,如何指定?