gpt4 book ai didi

jpa - 如何使用 JPA 映射 Duration 类型

转载 作者:行者123 更新时间:2023-12-04 21:22:18 29 4
gpt4 key购买 nike

我在类型为 javax.xml.datatype.Duration 的类中有一个属性字段.它基本上代表一个时间跨度(例如 4 小时 34 分钟)。

JPA 告诉我这是一个无效类型,这并不让我震惊。

这有什么好的解决办法?我可以实现我自己的 Duration 类,但我不知道如何让 JPA“接受”它作为数据类型。

最佳答案

Whats a good solution this? I could implement my own Duration class, but I don't know how to get JPA to "accept" it as a datatype.



JPA 不支持自定义类型,因此如果您想采用这种方式,则必须使用提供商提供的 JPA 扩展。例如,Hibernate 允许定义 custom value types你用 @Type 声明的.显然,这会损害提供者之间的可移植性,这可能是一个问题。如果没有,那么你知道这是可行的。

使用标准 JPA,传统方法是添加另一个 getter/setter 对,以适应有问题的属性并在访问时执行转换。我会使用 Long存储持续时间:
public MyEntity implements Serializable {
private Long id;
private javax.xml.datatype.Duration duration;

@Id
@GeneratedValue
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}

@Transient
public Duration getDuration() {
return this.duration;
}
public void setDuration(Duration duration) {
this.duration = duration;
}

public Long getDurationAsJpaCompatibleType() {
return MyXmlUtil.convertDurationToLong(this.duration);
}
public void setDurationAsJpaCompatibleType(Long duration) {
setDuration(MyXmlUtil.convertLongToDuration(duration));
}
}

关于jpa - 如何使用 JPA 映射 Duration 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2830089/

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