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

java - 使用 base=1 映射的 Hibernate IndexColumn 中的 0 值

我们正在针对 Oracle 数据库使用 Hibernate Annotations 3.4.0GA 和 Hibernate Core 3.3.2.GA(也称为当前稳定版本)

我们有一个 base=1 的一对多映射,它工作了很长时间,但上周我们在数据库中发现了一些索引列包含值 0 的条目,这导致了各种问题。

所以我的问题是:有没有人知道将值 0 放入一对多关系的索引列中的方法,当它被映射为 base=1 时?可能与使用泛型或 MappedSuperclass 有关。

请注意,代码相当复杂,因为也涉及到继承。

以下是课程的相关部分:

实际的类继承自这些并为类型参数提供具体的类。它们被映射为实体。他们还指定 id 和 version 列以及大量其他属性和引用,但与手头的映射无关。

0 投票
3 回答
4583 浏览

java - EclipseLink @MappedSuperclass 和泛型

我的 Web 应用程序中有一些域模型类与它们自身具有层次关系。一个例子是用于对用户发帖进行分类的层次类别结构。

有一些与这些类的层次性质相关的逻辑是常见的。所以我试图将逻辑移动到一个通用的@MappedSuperclass 注释超类中。

就像是 :

然后子类扩展 HierarchicalBaseEntity 将自己作为泛型类型 N:

在 Java 中,这一切都非常干净。但不幸的是 EclipseLink 似乎不喜欢通用的“父”字段:

它给出了以下例外:

为什么它抱怨非实体字符串?

作为测试,我尝试删除泛型并将父字段定义为:

没有泛型,EclipseLink 给出了这个例外:

真正的 HierarchicalBaseEntity 在任何一种情况下都不是实体,是@MappedSuperclass ..但是有没有办法用泛型或其他方式做到这一点?看来您的 @MappedSuperclass 中不能有一个引用它的子类之一的字段。

0 投票
4 回答
6759 浏览

java - 将注释应用于从 @MappedSuperclass 继承的字段

有:

如何在子类中使用@GeneratedValue 和@Index 注释继承的id?

0 投票
1 回答
5064 浏览

java - Hibernate:如何仅获取非逻辑删除的对象

几乎我们数据库中的每个表都有一个审计表的 FK,该表记录创建、更新和删除状态(日期和用户名)。

我们将审计表映射到 Auditing 类并像这样使用它:

如您所料,几乎每个实体都从 BusinessObject 扩展而来。

有没有一种简单的说法,对于每个业务对象,只接收“auditing.deleted is null”。

我尝试在 businessObject 中添加 @Where 和 @WhereJoinTable ,但这似乎不像我预期的那样工作。

目前,我已经对我的一个查询执行了此操作,并且此操作有效,但我不想对所有查询执行此操作,因为我们有大约 150 个查询。

0 投票
1 回答
430 浏览

java - 休眠,从 @MappedSuperClass 继承所有实体

我想为我的每个实体设置一些字段,如 updateDate、createDate 和 deleteDate,所以我想从包含此属性的 @MappedSuperClass 继承我的实体。

这是一个好习惯吗?

您以何种方式处理此类请求?

谢谢。

0 投票
1 回答
1990 浏览

java - Hibernate 代理对象不适用于超类方法

我们有一个使用 Hibernate 的 Web 应用程序。在将代码库升级到 Hibernate 3.6(从 3.3.2)后,我发现 Hibernate 生成的代理数据对象只为某些方法返回正确的值。似乎具体数据模型类中的方法工作正常,但@MappedSuperclass抽象超类中的方法不起作用。

这是我们拥有的数据模型:

这在 Hibernate 3.3.2 中运行良好,但在升级到 Hibernate 3.6 后,应用程序出现了问题。下面的测试代码说明了这个问题:

该代码的输出是:

其中四个方法返回了错误的结果:getId()、getVersion()、getLastUpdateDate() 和 getCreatedDate() 返回了 0 或 null。数据库中的实际行具有非零/非空值。但是 getName()、getPath() 和最奇怪的是 getSecurityId() 都运行良好。

谁能解释为什么会这样?这是映射超类的基本问题,还是有其他原因导致这种情况发生?

请注意,FormHibernate 返回的对象是 Javassist 代理 - 如果在调试器中查看,它通常具有类似Form_$$_javassist_15etc的类名。


更新:

这个问题似乎发生在 Hibernate 中,而不是 Javassist 中。我通过在 hibernate.properties 中设置将字节码生成切换到 CGLIB hibernate.bytecode.provider=cglib,但是使用 CGLIB 得到完全相同的错误结果(并且确认 CGLIB 正在工作,因为 Hibernate 返回的类名变为Form$$EnhancerByCGLIB$$4f3b4523)。

不过,我仍然无法确定为什么会出错。

0 投票
1 回答
9923 浏览

java - @MappedSuperclass 和 @OneToMany

我需要@OneToMany从 Country 到超类Place( @MappedSuperclass) 的关联。它可以是双向的。我需要类似的东西@OneToAny

国家:

没有@JoinColunm例外:

引起:org.hibernate.AnnotationException:@Any 需要明确的@JoinColumn(s):tour.spring.bc.model.vo.Country.places

在表 City 和 Region 中,表 Country (Region.country_id, City.country_id) 的外键是可以的。但是我不需要表 Country 到表 Region 和 City 中的外键,所以我不需要@JoinColum.

我能做些什么?

0 投票
2 回答
55809 浏览

java - Hibernate:如何覆盖映射超类的属性

通用实体,超类:

波乔:

我尝试使用那些注释:@AttributeOverride,@Id,...但它不起作用。你能帮助我吗?我想覆盖属性“id”以通过 pojo/table 指定另一个列名和序列。最好的方法是什么?

0 投票
1 回答
2393 浏览

hibernate - 带有 @MappedSuperclass 的休眠 TABLE_PER_CLASS 不会创建 UNION 查询

我正在尝试创建一系列对象,这些对象都存储在单独的表中,但所有这些表上都有一组共同的字段。我希望 Hibernate 对所有这些表进行 UNION,但不包括超类作为表。

当我只用注释超类时:@MappedSuperclass @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)

...hibernate 将为超类的 (n) 个子类型分别运行 (n) 个查询。

当我删除@MappedSuperclass 而将@Entity 放在超类上时,Hibernate 将执行花哨的 UNION 查询,但将超类作为表包含在 UNION 中(超类没有表)。

如何在不将父类设为 @Entity 的情况下将所有子类(而不是单独的查询)放在 UNION 中(因为它不是实体,所以没有表)?

0 投票
4 回答
21056 浏览

java - MappedSuperclass - 在子类中更改 SequenceGenerator

我将 JPA2 与 Hibernate 一起使用,并尝试为我的实体引入一个公共基类。到目前为止,它看起来像这样:

但是,对于每个表,都有一个$entityname_seq我想用作序列生成器的序列。如何从我的子类中设置它?我想我需要覆盖@GeneratedValue 并使用@SequenceGenerator 创建一个新的SequenceGenerator。