gpt4 book ai didi

hibernate - 如何覆盖单个字段的 AccessType

转载 作者:行者123 更新时间:2023-12-04 06:33:45 27 4
gpt4 key购买 nike

我有一个包含许多字段的类,并且所有字段都由属性注释。但是,对于这些字段之一,我想向数据库显示一个 double 值,向用户显示一个日期。

我在这里尝试了任意数量的组合,但 hbm2ddl(因此, hibernate )一直将停留属性视为时间戳。如果不是通过类似于我下面的注释(这是相关类的简化版本),我应该如何实现它?

我会考虑将所有注释移动到字段,但需要它的类位于继承层次结构的顶部,涉及另外 25 个类和许多许多注释。移动所有注释需要一天的大部分时间,这似乎是一种不雅的处理方式。

@Entity
@AccessType("property")
public class Test {

private long id;
private Double dwell;

@Id
@Column(name = "ID", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
@NotNull
public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

@AccessType("field")
@Column(name = "DWELL_ID", precision = 10, scale = 3)
public Date getDwell() {
return new Date();
}

public void setDwell(Double dwell) {
this.dwell = dwell;
}

}

最佳答案

这看起来有点奇怪。我不确定更改访问类型是否真的适合您。

您违反了 javabeans 约定,这是有风险的。不要这样做 - 让 getter 和 setter 成为纯粹的 getter 和 setter,没有像构造对象这样的隐藏的额外功能。

我只想写另一种方法 - getDwellAsDate()并在那里进行转换。您还可以定义自定义 hibernate Type处理那个(但不值得)

关于hibernate - 如何覆盖单个字段的 AccessType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5081484/

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