问题标签 [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 投票
1 回答
488 浏览

validation - Symfony / Doctrine:为“MappedSuperclass”中定义的属性添加注释

编辑: 我了解到,我的子类缺少一个注释('这里只是一个 ID',感谢 GreenLeaf)。我现在的实际问题是,我不知道如何覆盖它,我无法让它工作。


原来的:

我刚刚将一个 Symfony 2.0 应用程序迁移到 Symfony 2.2 并在 dev-profiler 中获得了关于单向一对多关联的“无效实体”信息。使用控制台时

我收到 2 条消息:

我认为这是错误的,因为“id”是在超类中定义的。应用程序仍然在旧数据库(使用 Symfony 2.0 创建)上运行良好。这是我的课程(简化):

代码:全选

0 投票
1 回答
532 浏览

jpa - Openjpa mappedsuperclass 在一个单独的 jar 中

我们正在尝试使用它们之间具有公共字段的实体来构建一些服务。为了解决这个问题,我们采用的方法是定义一个包含所有公共字段的基类,并从中扩展所有其他字段。

基类定义为映射超类,派生类是常规实体。在类级别,实体扩展了基类。

为了保持模块化,我们在一个公共项目(基于 maven)和依赖于这个公共项目的独立项目的实体中定义了基类。

问题是它不能识别/解析映射的超类。它无法解析常见的映射。

所以,我的问题是,无论我在这里做什么,它是否符合 JPA 规则/规范。

如果我在与具体映射相同的映射 xml 中定义映射超类,它工作正常。但是我必须为每个项目重复这一点,这是我想避免的。

以下是类和映射的一些代码片段。

还要注意,公共映射超类还定义了一个公共主键,即。ID。

基类:

为基类映射 xml

为此的持久性 xml

这些被打包在一个单独的 jar 中。

具体实体

具体实体的映射

具体实体的持久性 xml

编辑:(基于 dkaustubh 的建议)

如果我在基本实体上使用注释,它会起作用。我已将派生实体的映射保留在 XML 中。

但是,我想保持映射的一致性,并希望使用 XML 来定义它。为什么它适用于注解而不适用于 XML 映射?

0 投票
1 回答
3320 浏览

symfony-2.2 - 映射超类 Symfony2.2

我创建了一个只有 2 个实体的 Bundle(称为 MYBUNDLE):菜单和组。两者都被声明为 mappedSuperclass,因为我需要这个包可以用于其他项目。作为一个条件,项目必须从这些类扩展以通过设置表名或添加一些字段来自定义它们。例如:

MYBUNDLE 中的类:

YML 用于从 MYBUNDLE 映射我的实体

我的子包中的类:

然而,这两个类中的每一个都有一个属性,可以在它们之间建立多对多关联(由于 mappedSuperclass 不允许反向,我的关联是单向多对多关联)。

我需要在 MYBUNDLE 中进行查询。使用多对多关联连接两个表的查询。我想在 MYBUNDLE 中进行此查询的原因是因为此捆绑包具有一项服务,该服务可以在组或组中绘制菜单。这个方法应该从这个包中得到方便,所以其他包可以使用它,我不必在每个子包中实现。

我的部分解决方案是为我的 MYBUNDLE 制作一个配置部分,例如:

通过这个配置,我可以在 MYBUNDLE 中使用子包的存储库,如下所示:

当我在没有连接的情况下进行查询时,一切正常。另一方面,当我这样做时:

一切都失败了,因为形成的 SQL 试图寻找一个不存在的名为“Menu”的表,因为它被称为“sf_menu”。表组正确更改为“sf_group”,因为我正在使用我孩子的存储库。但是,使用此存储库只需更改该类的名称,而不是连接表的名称。

我怎样才能在 MYBUNDLE 中进行这种查询?非常感谢。

0 投票
2 回答
584 浏览

inheritance - eclipselink继承实现

我正在尝试在我的项目中实现 ElcipseLink JPA2.0 以进行继承。不能使用注释。只有 xml 映射。

这是我的代码。公共类 DefaultEntity {

这是我的 ORM.xml

我不断收到“在关系属性 [field de] 中使用非实体 [class DefaultEntity] 作为目标实体”

如何让 EclipseLink 识别分配的实际类并使用该映射?

有任何想法吗?最重要的是,可以使用 EcliseLink 完成吗?

谢谢戈皮

0 投票
0 回答
204 浏览

java - JPA一实体3表

我有三个表,每个表都有相同的列。其中一个具有原始测量数据,另一个具有聚合到分钟和小时的数据。在 JPA 中加载数据时,我希望每组数据都具有相同的实体/类。我用继承/映射超类尝试了它,但到目前为止还没有成功(不确定我是否做对了)。我要么没有合适的构造函数,要么表没有映射。当我将我的值实体的表设置为其中一个表时,它适用于该表,但是我希望能够在运行时从所有表中加载数据。

来自 PersistenceManager.java

价值.java

}

堆栈跟踪

如果有帮助,这里是整个项目http://crafthost.de/src.zip

希望你能理解我想要做什么。

0 投票
2 回答
2343 浏览

symfony - 多级继承映射与学说 2

我有三个“可寻址”实体(可以有一个地址):

交货点
客户
配送中心

每个可寻址实体也是可地理定位的(具有纬度和经度),但我有可地理定位但不可寻址的实体,例如 轨迹点路线点(经纬度的有序序列)。

使用学说 2(使用 Symfony2 和 YAML 映射)实现这一目标的最佳方法是什么(请考虑性能,因为某些表可能有数百万行)?

我的问题是:解决这个问题的最佳方法是什么?映射超类?单表继承?多表继承?通过阅读教义的文档,我没有得到哪一个最适合这个。

如果这很重要,我正在使用 PostgreSQL。

0 投票
2 回答
195 浏览

inheritance - JPA 使用继承区分 id GenerationType

我有两个不同的数据库 D1、D2 和同一个表 T。

T 有一个主键列 id,它在 D1 中自动生成,在 D2 中是一个简单的整数。我必须将记录从 D1 中的 T 转移到 D2 中的 T,因此我将 T 映射为带有 JPA 的 @Entity。问题是 @ID 是 @GeneratedValue(strategy = GenerationType.IDENTITY) 对于 D1 但不是 D2。

有没有不复制实体的解决方案?我注意到使用@MappedSuperclass 我需要一个@Id 列,但就我而言,这是我想要专攻的。我找到的唯一解决方案是生成两个不同的类,它们引用同一个表,除了@id 之外是相同的......还有什么更好的吗?

(如果我使用常见的抽象类,我在定义@NamedQueries 时会遇到问题,因为似乎无法引用继承的字段(SELECT m FROM Specialized m WHERE m.aBaseField= :aBaseField)返回异常:“状态字段路径” m.aBaseField' 无法解析为有效类型。”

0 投票
1 回答
8482 浏览

symfony - Doctrine2 / Symfony2 - 同一张桌子上的多个实体

在 Symfony2 应用程序中,我有一个MainBundle和可以启用或不启用的不同包。在MainBundle我需要有Model和一个基本的Entity。在OtherBundle中,与MainBundle中的实体具有相同表名的实体

MainBundle 中的 Fixtures 需要加载或不加载 MainBundle 以外的其他包:

如果我对Model使用@ORM\MappedSuperclass ,在 MainBundle 中使用@ORM\Entity 在OtherBundle 中使用@ORM \ Entity,然后 Doctrine2 停止并出现错误“表已存在”。

我不能使用继承表,因为我的模型不需要了解其他包中的其他实体。@ORM \DiscriminatorMap不能指向OtherBundle

有没有办法做到这一点 ?

0 投票
0 回答
709 浏览

hibernate - Hibernate - 混合 MappedSuperClass 和嵌入式 ORM 策略

我有一个正在使用的现有 Hibernate Entity 层次结构。实体已经使用 MappedSuperClass 从基类继承一些公共字段。在我的场景中,我还需要继承这些字段,此外还需要通过 Hibernate 中的 Embeddable 功能利用一些组合。

例如,实体 Car 被标记为 MappedSuperClass,并由实体 CarTypeA 和 CarTypeB 扩展。

现在 CarTypeA 和 CarTypeB 也碰巧在它们之间有一些公共字段,可以提取到 Embeddable 类中(我们称之为 CommonCarStuff)。CommonCarStuff 如下所示

我可以在 CarTypeA 中使用此类,但在运行时 Hibernate 生成的 INSERT 查询不正确。而不是生成

查询生成的状态

而且我没有在我的表中映射此列,导致查询总是失败 - 我已经正确声明了 Embedded 类。

希望有人可以帮助我。

谢谢

0 投票
0 回答
575 浏览

php - 教义 2 - 如何拥有一个具有映射超类的关联类?

我在使用 Doctrine 2 映射超类来定义多对多关系时遇到问题。

我的代码是:

所以这是我所拥有的架构:http: //pix.toile-libre.org/upload/original/1385651287.png 还有我想要的:http: //pix.toile-libre.org/upload/原文/1385651300.png

我不知道如何获得这个结果,有人可以告诉我是否可能吗?

感谢你们对我的帮助。