问题标签 [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.
symfony - 如何使用 Doctrine2 在扩展实体中添加索引?
我正在使用 Doctrine2 来扩展实体。主要实体是这样定义的:
虽然扩展实体是这样开始的
现在我想向结果表“erp_articoli”添加另一个索引,但我不知道该怎么做。标签@ORM\Table(indexes={@Index(name="search_codfamweb", columns={"codice_famiglia_web"})})
不会做任何事情(甚至不会出错)......如何实现我的目标?
spring - MappedSuperclass 将所有子实体映射到一个子实体
我有TranslationBase基础抽象类和两个子类 [entities]:CountryTranslation 和 RegionTranslation,如下所示:
翻译库:
国家翻译:
区域翻译:
和 TranslationBasePK :
在 DB 上,我发现 CountryTranslation 和 RegionTranslation 表中的 id 列对 Country 表 id 的引用!
我希望 CountryTranslation 引用 Country 和 RegionTranslation 的 id 来引用 Region 类的 id。
注意:国家和地区有 @Id 字段名为 id;
php - Doctrine - OneToOne 关系不适用于扩展 MappedSuperclass
我尝试使用@MappedSuperclass。它适用于简单变量(int、string...)和 OneToMany/ManyToOne 关系。但是 OneToOne 关系不起作用。
我有两个具有 OneToOne 关系的 MappedSuperclass:_SiteUser
_SiteUserTo
这是我扩展这些 MappedSuperclass 的 2 类:SiteUser
站点用户至
当我从 MappedSuperclass(_SiteUser 和 _SiteUserTo)生成实体时,我得到了一个名为“users_to”的表,其中包含 id 和 user_id。但是当我从其他类(SiteUser 和 SiteUserTo)生成实体时,它会创建只有 id 字段的表“users_to”。我不知道为什么...
如果我像这样更新我的 SiteUser 类:
和 SiteUserTo 喜欢这样:
我遇到了同样的问题,user_id
表中没有字段users_to
。但是“测试”字段在表格site_users
和表格中创建得很好users_to
......
symfony - 在 Doctrine 中使用映射的超类覆盖多对多关联
CommonResource
我想在映射的超类和实体之间建立多对多的关联Author
。我们正在使用学说手册提供的关于这个主题的语法:关联覆盖学说。但是当我用我验证学说模式时,php bin/console doctrine:schema:val
我得到以下错误:
我有一个映射的超类CommonResource
:
和一个实体Author
:
以及一些扩展映射超类的实体,例如:
我是否正确使用了映射超类的关联覆盖的学说语法,或者有什么问题?我将不胜感激任何帮助 :)
spring - 公共 JPA 基本实体分离主键序列
我有一个从BaseEntity扩展的UserAuthenticationEntity。
所有未来的实体都将扩展 BaseEntity类。
是否有可能所有实体都从BaseEntity类继承id属性但具有单独的序列来生成主键?
我知道这是一个有线场景,但我认为拥有一个基实体类是为所有实体类定义id属性的好地方,但不能使用不同的序列是一种交易破坏者。不确定是否可以完成。
也欢迎实体类的任何替代/更好的设计。
java - 如何在 JPA 实体中对继承进行最佳建模
我想知道如果实体不共享主键,那么在 JPA 实体中使用继承的最佳做法是什么,特别是如果数据库已经存在并且不能轻易更改。
假设我们有一个员工数据库,就像Oracle HR 示例中使用的那样。现在,该数据库不太现实。工资通常会随着时间而变化,我们将跟踪工资的变化情况。例如,一份工作合同可能会规定,每年 12 月,员工都会与他们的经理会面,讨论下一年的工资。
因此,我们将从 HR.EMPLOYEES 中删除薪水字段并创建一个新表 HR.SALARIES:
主键将由 EMPLOYEE_ID 和 VALID_FROM 组成。
因此,现在如果 Pat 在 12 月遇到她的经理 Michael 并同意新的薪水,我们将在 HR.SALARIES 中插入一条新记录。
现在,让我们假设 HR 部门在输入新数据时出错,因此 Pat 在 1 月份得到了错误的薪水。她将问题报告给她的老板,他联系人力资源部门,他们更正了 HR.SALARIES 中的记录。她将在 2 月份的付款中收到缺失的金额。
年底,公司进行审计。审计员想知道为什么 1 月份发给 Pat 的工资支票与数据库中的工资条目不匹配。为了确保审计人员始终能够理解系统做出某些决定的原因(例如开出一定数量的支票),我们需要保留更改历史记录。
将 HR.SALARIES 更改为:
添加新表 HR.SALARIES_CHANGE_HISTORY:
主键将由 EMPLOYEE_ID、VALID_FROM 和 CHANGE_DATE 组成。
出于性能原因,我们将更改历史记录保存在单独的表中:我们的 HR 系统几乎不会读取它。
现在我们终于来回答我的问题了。我们如何在 JPA 中最好地为这个数据库建模,我们能否以某种方式利用继承,因为表 HR.SALARIES 和 HR.SALARIES_CHANGE_HISTORY 是相同的,除了 CHANGE_DATE 是 HR.SALARIES_CHANGE_HISTORY 中主键的一部分。
JavaEE 中有 @MappedSuperclass,一开始听起来不错,但在使用 @MappedSupperclass 的类层次结构中不可能使用不同的主键(请参阅JSR-000338 JavaTM Persistence 2.1,第 2.4 节和JSR 220:Enterprise JavaBeansTM,版本3.0,第 2.1.4 节)。
有什么方法可以避免 SALARIES 和 SALARIES_CHANGE_HISTORY 的实体 bean 中的代码重复?
java - MappedSuperclass - 更改子类中的 SequenceGenerator 而不在超类上使用 @GeneratedValue
我有一个基类:
未使用 @GeneratedValue,因为 id 是使用 BackendSession 生成的
这个类有很多继承,所以不能改变它!
我的子类:我试图覆盖 getId 方法
但是我在 IdentifierGenerationException 上失败了,我做错了什么?
spring - Spring - JPA 在抽象类中加入抽象类
我对 JPA 继承有疑问。数据库模型也是专门搭建的。它包含几个具有相同属性的表(这些表是故意按国家/地区切割的),并且所有这些表都连接到另一个表(OneToOne)。
以下是数据模型的示例:usa_user、Germany_user、austria_user。所有这些表都具有相同的属性(id、name、address)。现在地址也是根据国家建立的,例如usa_address、Germany_address、austria_address。
现在我不知道或有问题,我已经正确映射了很长时间。我有以下内容:
But unfortunately this does not work. Every time I start it JPA notices that it can't map the Entities Address - User (which is understandable because they are not entities but abstract classes). What would be the best way to solve this? I want to avoid that I have to list the attributes in all these entities because it would be redundant.
The goal is to find out how I can use a @MappedSuperclass
in a @MappedSuperclass
.
java - “无法执行保存操作:org.hibernate.exception.DataException:无法执行语句”使用 OpenXava?
我对 Java 很陌生,需要一些帮助。我使用 OpenXava 创建了一个 @MappedSuperclass “与会者”。
然后,我将其扩展为另外两个类“员工”和“参与者”。
和
下面是两个 @Embedded 元素的代码:
地址:
和
医疗信息:
除了参加者类,我省略了所有的 getters() 和 setters()。
我将应用程序作为 Java 应用程序运行,它一直工作到我尝试输入和保存记录为止。当我单击“保存”时,系统会提示我:
在 OpenXava 的控制台中仔细检查后,我发现以下内容:
我在这里没有提到的应用程序中的其他实体,允许我保存新记录。然而,这些实体与提供的代码没有链接或相关。
请帮忙。
java - Java Spring @MappedSuperclass 字段作为子类中的@Id 字段
我有以下超类,它将被许多类扩展。它的一个属性foreignKey 将是继承类之一的@Id。
超类:
继承类:
当我尝试构建时,我得到了错误:
有没有办法做到这一点?