问题标签 [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.
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 列以及大量其他属性和引用,但与手头的映射无关。
java - EclipseLink @MappedSuperclass 和泛型
我的 Web 应用程序中有一些域模型类与它们自身具有层次关系。一个例子是用于对用户发帖进行分类的层次类别结构。
有一些与这些类的层次性质相关的逻辑是常见的。所以我试图将逻辑移动到一个通用的@MappedSuperclass 注释超类中。
就像是 :
然后子类扩展 HierarchicalBaseEntity 将自己作为泛型类型 N:
在 Java 中,这一切都非常干净。但不幸的是 EclipseLink 似乎不喜欢通用的“父”字段:
它给出了以下例外:
为什么它抱怨非实体字符串?
作为测试,我尝试删除泛型并将父字段定义为:
没有泛型,EclipseLink 给出了这个例外:
真正的 HierarchicalBaseEntity 在任何一种情况下都不是实体,是@MappedSuperclass ..但是有没有办法用泛型或其他方式做到这一点?看来您的 @MappedSuperclass 中不能有一个引用它的子类之一的字段。
java - 将注释应用于从 @MappedSuperclass 继承的字段
有:
和
如何在子类中使用@GeneratedValue 和@Index 注释继承的id?
java - Hibernate:如何仅获取非逻辑删除的对象
几乎我们数据库中的每个表都有一个审计表的 FK,该表记录创建、更新和删除状态(日期和用户名)。
我们将审计表映射到 Auditing 类并像这样使用它:
如您所料,几乎每个实体都从 BusinessObject 扩展而来。
有没有一种简单的说法,对于每个业务对象,只接收“auditing.deleted is null”。
我尝试在 businessObject 中添加 @Where 和 @WhereJoinTable ,但这似乎不像我预期的那样工作。
目前,我已经对我的一个查询执行了此操作,并且此操作有效,但我不想对所有查询执行此操作,因为我们有大约 150 个查询。
java - 休眠,从 @MappedSuperClass 继承所有实体
我想为我的每个实体设置一些字段,如 updateDate、createDate 和 deleteDate,所以我想从包含此属性的 @MappedSuperClass 继承我的实体。
这是一个好习惯吗?
您以何种方式处理此类请求?
谢谢。
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() 都运行良好。
谁能解释为什么会这样?这是映射超类的基本问题,还是有其他原因导致这种情况发生?
请注意,Form
Hibernate 返回的对象是 Javassist 代理 - 如果在调试器中查看,它通常具有类似Form_$$_javassist_15
etc的类名。
更新:
这个问题似乎发生在 Hibernate 中,而不是 Javassist 中。我通过在 hibernate.properties 中设置将字节码生成切换到 CGLIB hibernate.bytecode.provider=cglib
,但是使用 CGLIB 得到完全相同的错误结果(并且确认 CGLIB 正在工作,因为 Hibernate 返回的类名变为Form$$EnhancerByCGLIB$$4f3b4523
)。
不过,我仍然无法确定为什么会出错。
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
.
我能做些什么?
java - Hibernate:如何覆盖映射超类的属性
通用实体,超类:
波乔:
我尝试使用那些注释:@AttributeOverride,@Id,...但它不起作用。你能帮助我吗?我想覆盖属性“id”以通过 pojo/table 指定另一个列名和序列。最好的方法是什么?
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 中(因为它不是实体,所以没有表)?
java - MappedSuperclass - 在子类中更改 SequenceGenerator
我将 JPA2 与 Hibernate 一起使用,并尝试为我的实体引入一个公共基类。到目前为止,它看起来像这样:
但是,对于每个表,都有一个$entityname_seq
我想用作序列生成器的序列。如何从我的子类中设置它?我想我需要覆盖@GeneratedValue 并使用@SequenceGenerator 创建一个新的SequenceGenerator。