gpt4 book ai didi

java - 具有泛型的 Hibernate 组件

转载 作者:行者123 更新时间:2023-11-30 12:00:39 25 4
gpt4 key购买 nike

好的,这个问题最好用代码来解释。因此,我将尽我所能提供最简洁的示例。

Timestamped.java

@Embeddable
public class Timestamped<E> {
private E value;
private Date timestamp;
...
}

Foo.java

@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="TYPE")
public class Foo {
@Embedded
@AttributeOverides({
@AttributeOverride(name="timestamp", column=@Column("VALUE_TS")),
@AttributeOverride(name="value", column=@Column("VALUE"))
})
private TimestampedValue<E> value;
...
}

Bar.java

@Entity
@DiscriminatorValue("BAR")
public class Bar extends Foo<Double> { }

我需要的是让 Bar 为 value.value 使用适当的类型转换器,并为 Foo 的每个子类使用不同的转换器。理想情况下,我只想扩充这段代码,但我可以将 Foo 抽象化并将值字段移动到每个带有附加注释的子类。

最佳答案

第一种方法行不通 - 你不能持久化“通用化”类。

您要么必须像您建议的那样将 value 移动到具体的子类中,要么编写一个 UserType 来保留您的 Timestamped 组件。

关于java - 具有泛型的 Hibernate 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1774148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com