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

jpa - 具有多对一的 JPA 映射超类

我面临着一种典型的问题。想象一下对象之间典型的 1-N 关系。准确地说是用户(U)和房间(R):[U]*---1[R]。

问题来了,Room 应该是具有 BlueRoom、RedRoom 等实现的抽象基类。如何正确设置用户实体中的关系?

我知道这可以通过在 RoomSuperclass 上使用 @Entity 而不是 @MappedSuperclass 来解决,但我不确定它是否是好的解决方案以及是否有更好的解决方案。

0 投票
2 回答
2172 浏览

hibernate - Hibernate 中的@MappedSuperClass = AnnotationException: Unknown mappedBy

错误: 引起:org.hibernate.AnnotationException:未知 mappedBy 在:com.xxx.data.dao.classes.Categories.categoriesLang,引用属性未知:com.xxx.data.dao.classes.superclasses.CategoriesLang.categories

我的设置:

休眠 3.5.6



更新解决了!!!

经过长时间的研究最终我成功了。它工作正常!

能效比





0 投票
2 回答
1977 浏览

inheritance - 为什么我的@MappedSuperClass 不起作用?

我有以下 @MappedSuperClass 和 @Entity :

在数据库中,两个表都有相同的列,所以我的所有属性都在 SuperClass 中:

但是当我尝试使用@entity(table1 或 table2)之一执行查询时,我得到一个 OpenJPA ERROR :

我不明白为什么在@Entity 类中找不到属性@Id。

如果有人有任何想法,请随时帮助我:)

问候,

Cytemax

0 投票
0 回答
1063 浏览

php - 在 Doctrine 2 中使用映射的超类

对于学校,我正在制作一个与 ORM 一起使用的 php 项目。教义 2. 它必须有继承。我做了以下设置,我想在屏幕上打印客户。

由于需要继承,我将在客户和用户上扩展类人。现在是这样定义的

}

}

我可以创建数据库并且所有查询都在工作,但是如果我尝试运行客户查询,我会收到错误消息。不涉及继承的所有其他查询都可以正常工作。因此,问题不是查询或视图。

这是查询的结果

创建的数据库看起来很整齐,并具有在 Person 中定义的字段。一件事我注意到还有一个人的桌子,我认为这是不合时宜的?

我仔细查看了文档。谷歌搜索了这个错误,但它并没有让我更进一步。

0 投票
1 回答
4005 浏览

java - Eclipse 中单独 JAR 中的 JPA @MappedSuperclass 导致验证错误“实体未定义主键属性”

我有一个 @MappedSuperclass AbstractEntity 用于我的所有 @Entity 类。只要超类与我的实体在同一个 Eclipse 项目中,它就可以完美地工作。但是由于我在几个项目中重用了这个超类,我只想将它分解成它自己的 JAR 文件。当我这样做时(当然我将 JAR 文件添加到构建路径中),Eclipse 会在我的每个 @Entity 类上给出一个错误:

该实体没有定义主键属性。

Eclipse 突出显示 @Entity 注释作为错误的来源。当然,所有的类都继承自这个 AbstractEntity。两个项目中的包名称相同。JAR 项目具有所有必要的构建路径 - 包含 AbstractEntity 的 JAR 文件项目中没有错误。

当我将它部署到我的应用服务器(JBoss 7.1)时,它工作正常。这让我认为这只是一个错误识别错误的 Eclipse 问题。

抽象实体:

简单实体类示例:

我已经看到其他一些帖子说问题可能是超类中的注释在 getter 上而不是在字段上 - 如果您的实体中没有其他 JPA 注释,这只是一个问题,我这样做了。有任何想法吗?

0 投票
1 回答
262 浏览

php - 带有生命周期回调和注释驱动程序的学说类继承

我在使用与生命周期回调相关的注释驱动程序时遇到了教义 orm 的问题。我有 2 节课:

  1. 抽象模型(标记为 MappedSuperclass,具有生命周期回调)
  2. 用户(扩展模型,标记为实体)

如果我将用户实例保存到数据库,则不会调用 prePresist 方法。如果我将方法移至 User 类,一切正常。

你能给我一个提示如何让继承按预期工作吗?(我尝试为扩展 Model 类的所有类设置 uuid 而不是 id)

你可以在这个要点上观看

0 投票
3 回答
5442 浏览

doctrine-orm - Doctrine2:映射超类上的 OneToMany

我的数据库结构如下:

工作:

  • CTI工作
  • MappedSuperclassAbstractImageWork扩展Work
  • 扩展AbstractImageWork的决赛桌PhotoWork

评论:

WorkComment与Work具有 ManyToOne 关系:

Work与WorkComment具有 OneToMany 关系:

问题是 Doctrine 在更新模式时给了我这个错误:

我想这与夹在WorkPhotoWork中间的 MappedSuperclass AbstractImageWork有关,但我实际上并没有将这种关系放在 MappedSuperclass 上,而是放在 CTI 表上.. 那么为什么 Doctrine 会这样呢?

有任何想法吗?

0 投票
1 回答
6600 浏览

spring - 我可以使用 Spring Data JPA 为 MappedSuperClass 的所有子级使用通用存储库吗?

给定以下类结构:

使用Spring Data JPA,是否可以使用通用Animal存储库在运行时持久Animal化而不知道Animal它是哪种类型?

我知道我可以使用 Repository-per-entity 并使用instanceof如下方式来做到这一点:

但我不想诉诸使用instanceof.

我试过使用这样的通用存储库:

但这会导致此异常:Not an managed type: class Animal。我猜是因为Animal不是一个Entity,而是一个MappedSuperclass

最好的解决方案是什么?

顺便说一句 -Animal与我的课程中的其余部分一起列出persistence.xml,所以这不是问题。

0 投票
1 回答
1380 浏览

java - 如何覆盖@MappedSuperclass的子类中的参数

我有一个 MappedSuperclass

我想覆盖something子类中的

但得到Caused by: org.hibernate.MappingException: Duplicate property mapping of data found异常

我尝试了不同的东西,比如“@AttributeOverride”注释,但没有帮助。

我知道的唯一解决方案是something在 mappedSuperclass 中制作 Transient。但我不希望它在这里是瞬态的(因为还有另一个子类不想覆盖something但希望它是瞬态的)

0 投票
1 回答
1803 浏览

jakarta-ee - @MappedSuperclass 上的实体侦听器不起作用?

背景

我正在使用 EclipseLink(版本 2.3.2.v20111125-r10461,JPA 2.0 规范的实现提供程序)。

考虑一下这个@MappedSuperclass,称为Person

他是抽象的,并附有一个听众(Listener )。这是监听器的实现:

然后我们有一个扩展Person的Employee类:

Employee仍然是抽象的,并不意味着被实例化。但是, Employee 被认为可能是关系的一部分,因此被注释掉了@Entity。层次结构继续使用名为PartTimeEmployee的非抽象实体

PartTimeEmployee旨在被实例化。让我们尝试一下,看看会发生什么!除了一个小细节外,一切似乎都很好。@MappedSuperclass 在Person上注册的实体监听器不会被调用。如果我们将@EntityListeners注释从Person向上移动到Employee ,甚至不会调用侦听器。

一个修复

@EntityListeners注释一直移动到PartTimeEmployee,他将被调用。唔。

另一个修复

如果我们完全省略Employee上的注释,我们可以保持在Person上注册的侦听器,并且侦听器将按预期调用。但是当然,我得到了一个我不想拥有的单桌策略。同样,我们可以更明确一点,将策略值从to更改为,然后将调用侦听器。当然,唯一的问题是我的数据库模式看起来不像我想要的那样。@InheritanceInheritanceType.TABLE_PER_CLASSInheritanceType.SINGLE_TABLE

因此,这里问题的核心是Employee@Inheritance类上的注释(更具体地说;将策略更改为每个类一个表),这使得 EclipseLink 忘记了层次结构中的所有实体侦听器。

这根本不是我所期望的。我不明白的是什么?