Hibernate注释:在varchar列中存储int
我正在使用Hibernate注释 在我的POJO中,我有一个整型的年份字段Hibernate注释:在varchar列中存储int,hibernate,hibernate-annotations,Hibernate,Hibernate Annotations,我正在使用Hibernate注释 在我的POJO中,我有一个整型的年份字段 我想将这个值保存在数据库中的char4列中,并让hibernate来回转换类型。我开始研究@Type注释,但如果可能的话,我不想写我自己的自定义类型?如果映射到DB的char4列的POJO字段是access by属性,hibernate将调用其setter和getter进行数据库和POJO之间的映射。因此,转换逻辑可以在该属性的setter和getter内部实现。此外,intDate应该标记为@Transient,以告诉
我想将这个值保存在数据库中的char4列中,并让hibernate来回转换类型。我开始研究@Type注释,但如果可能的话,我不想写我自己的自定义类型?如果映射到DB的char4列的POJO字段是access by属性,hibernate将调用其setter和getter进行数据库和POJO之间的映射。因此,转换逻辑可以在该属性的setter和getter内部实现。此外,intDate应该标记为@Transient,以告诉hibernate忽略映射此字段
public class TableABC {
private int id;
private int intDate;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(length=4)
private String getCharDate() {
return String.valueOf(this.intDate);
}
private void setCharDate(String charDate) {
try {
this.intDate = Integer.parseInt(charDate);
} catch (NumberFormatException e) {
//Logic to handle when charDate cannot convert to integer
this.intDate = 0;
}
}
@Transient
public int getIntDate() {
return intDate;
}
public void setIntDate(int intDate) {
this.intDate = intDate;
}
}
如果映射到DB的char4列的POJO字段是access by属性,则hibernate将调用其setter和getter来进行数据库和POJO之间的映射。因此,转换逻辑可以在该属性的setter和getter内部实现。此外,intDate应该标记为@Transient,以告诉hibernate忽略映射此字段
public class TableABC {
private int id;
private int intDate;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(length=4)
private String getCharDate() {
return String.valueOf(this.intDate);
}
private void setCharDate(String charDate) {
try {
this.intDate = Integer.parseInt(charDate);
} catch (NumberFormatException e) {
//Logic to handle when charDate cannot convert to integer
this.intDate = 0;
}
}
@Transient
public int getIntDate() {
return intDate;
}
public void setIntDate(int intDate) {
this.intDate = intDate;
}
}
我对Hibernate源代码进行了快速搜索,我认为没有一种类型可以用于此: 但我鼓励您实现自己的类型,可能是一年类型,因为这并不像听起来那么困难:-
另一个解决方案,在setter中处理转换,也是一个选项,但是如果没有大量的测试和性能度量,我不会这么做 我对Hibernate源代码进行了快速搜索,我认为没有一种类型可以用于此: 但我鼓励您实现自己的类型,可能是一年类型,因为这并不像听起来那么困难:-
另一个解决方案,在setter中处理转换,也是一个选项,但是如果没有大量的测试和性能度量,我不会这么做 谢谢你,我想它能满足我在这里的需要。虽然,我读得越多,自定义类型似乎并不太难,所以也许我以后也会尝试使用该方法。这应该可以让功能启动并运行了。谢谢你,我认为它可以满足我的需要。虽然,我读得越多,自定义类型似乎并不太难,所以也许我以后也会尝试使用该方法。现在应该可以启动并运行该功能。