gpt4 book ai didi

java - Hibernate 实体映射 : Retrieve VARCHAR as boolean

转载 作者:搜寻专家 更新时间:2023-10-30 21:58:40 27 4
gpt4 key购买 nike

我的数据库中有一个表 INCIDENCIA,它有一个 VARCHAR 列 VISIBLE,有两个可能的值:YN 匹配 truefalse

我把它映射到这个实体中:

@Entity
public class Incidencia {

private String visible;

//other fields

@Basic
@Column(name = "VISIBLE")
public String getVisible() {
return visible;
}

public void setVisible(String visible) {
this.visible = visible;
}
}

这个字段是一个字符串,因为数据库中的列是一个 VARCHAR,但是我想通过 Y/N 反序列化将它检索为 java.lang.Boolean。

有没有办法通过 Hibernate 注释来做到这一点?

谢谢。

最佳答案

您可以创建自己的映射类型。像这样:

package es.buena.jamon.type;

public class SpanishBoolean extends AbstractSingleColumnStandardBasicType<Boolean>
implements PrimitiveType<Boolean>, DiscriminatorType<Boolean>
{
private static final long serialVersionUID = 1L;
public static final SpanishBoolean INSTANCE = new SpanishBoolean();


public SpanishBoolean() {
super( CharTypeDescriptor.INSTANCE, new BooleanTypeDescriptor('S', 'N') );
}
@Override
public String getName() {
return "si_no";
}
@Override
public Class getPrimitiveClass() {
return boolean.class;
}
@Override
public Boolean stringToObject(String xml) throws Exception {
return fromString( xml );
}
@Override
public Serializable getDefaultValue() {
return Boolean.FALSE;
}
@Override
public String objectToSQLString(Boolean value, Dialect dialect) throws Exception {
return StringType.INSTANCE.objectToSQLString( value ? "S" : "N", dialect );
}
}

然后用配置注册它:

Configuration configuration = new Configuration().configure();
configuration.registerTypeOverride(new SpanishBoolean());

然后在您的实体中使用它:

@Type(type="es.buena.jamon.type.SpanishBoolean")
private Boolean visible;

希望对您有所帮助。

关于java - Hibernate 实体映射 : Retrieve VARCHAR as boolean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28851462/

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