Hibernate 如何在单个字段上重写AccessType
我有一个类,它包含许多字段,所有字段都由属性注释。但是,对于其中一个字段,我想向数据库显示一个double,向用户显示一个Date 我在这里尝试了任意数量的组合,但是hbm2ddl(以及hibernate)一直将驻留属性视为时间戳。如果不是通过类似于下面的注释(这是所讨论的类的简化版本),我应该如何实现这一点Hibernate 如何在单个字段上重写AccessType,hibernate,annotations,Hibernate,Annotations,我有一个类,它包含许多字段,所有字段都由属性注释。但是,对于其中一个字段,我想向数据库显示一个double,向用户显示一个Date 我在这里尝试了任意数量的组合,但是hbm2ddl(以及hibernate)一直将驻留属性视为时间戳。如果不是通过类似于下面的注释(这是所讨论的类的简化版本),我应该如何实现这一点 我会考虑将所有注释移到字段中,但是需要这个注释的类位于继承层次结构的顶部,涉及到另外25个类和许多、许多注释。移动所有注释需要花费一天的大部分时间,而这似乎是一种不雅观的处理方式 @Ent
我会考虑将所有注释移到字段中,但是需要这个注释的类位于继承层次结构的顶部,涉及到另外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,而没有像构建对象这样隐藏的额外功能
我只需编写另一个方法-
getwellaasdate()
,并在那里进行转换。您还可以定义一个自定义的hibernate类型来处理这个问题(但这不值得)我实际上没有想到bean标准。听起来最好的方法是使用备用访问器。谢谢