Jef*_*ker 5 java hibernate jdbc user-defined-types
我正在使用自定义的Hibernate类型AbstractSingleColumnStandardBasicType来自动将SQL UDT转换为Java类型。SQL使用数据库函数来构造和序列化BLOB和/或CLOB中的列数据,我想向用户隐藏该数据。因此,它们不必用@ColumnTransformer(read="_serializer(column_name)", write="_constructor(?)")在每个列上。
我已经使用BLOB SqlTypeDescriptor和自定义JavaTypeDescriptor进行了类型化,以在JDBC级别进行转换,但是如何让我的自定义类型将列和参数包装在适当的SQL函数中呢?我找不到任何描述这样的东西。
编辑:为了更具体一点,ST_GEOMETRY必须通过数据库函数(ST_LineFromText)或定义的UDT构造函数()构建此UDT(SDE ST_LineString)。同样,要从数据库中读取它们,必须将它们“导出”为某种格式(ST_AsText),以供Java读取。在这种情况下,无法正常使用读取类型字段的方法。
所以:
create table geo_lines (
line SDE.ST_GEOMETRY
);
Run Code Online (Sandbox Code Playgroud)
和:
@Entity
@Table(name="geo_lines")
public class GeoLine {
@Column(name="line")
@Type(type="org.example.MyStLineType")
// i'm wanting to be able to omit the following annotation
@ColumnTransformer(read="SDE.ST_AsText(line)",
write="SDE.ST_ST_LineFromText(?, 3857)")
private Polyline line;
}
Run Code Online (Sandbox Code Playgroud)
因此,我真正需要用户输入的是数字(3857在这种情况下),它可以作为参数传递,而其他所有内容都是任何行的标准样板。对其他类型(如点,多边形等)重复上述步骤。
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |