Héc*_*tor 3 java database hibernate hibernate-mapping
INCIDENCIA我的数据库中有一个表,它有一个 VARCHAR 列,VISIBLE其中包含两个可能的值:Y或N匹配true或false。
我已将其映射到此实体中:
@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;
}
}
Run Code Online (Sandbox Code Playgroud)
这个字段是一个字符串,因为数据库中的列是一个 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 );
}
}
Run Code Online (Sandbox Code Playgroud)
然后用配置注册它:
Configuration configuration = new Configuration().configure();
configuration.registerTypeOverride(new SpanishBoolean());
Run Code Online (Sandbox Code Playgroud)
然后在您的实体中使用它:
@Type(type="es.buena.jamon.type.SpanishBoolean")
private Boolean visible;
Run Code Online (Sandbox Code Playgroud)
希望有帮助。
| 归档时间: |
|
| 查看次数: |
1940 次 |
| 最近记录: |