我的类实现了Hibernate自定义用户类型。实现UserType,ParameterizedType。
public Object nullSafeGet(ResultSet resultSet, String[] params, Object owner) throws SQLException {
我需要通过resultset参数访问状态字段。所以我有两种访问方式。
通过给出列号resultSet.getString(17);
指定列名称。 Hiberbate返回
resultSet.getString("STATUS13_51_0_"); //STATUS13_51_0_
Hibernate使用自己的别名生成查询,因此我可以使用别名访问而不是列名。
问题:每次从状态列访问我需要访问的不同地方调用此类。
由于传入查询不同,接收列号和生成的字段别名不同。
你能建议我克服这种情况的方法是什么?
答案 0 :(得分:0)
您应该在resultSet.getString
数组的相应元素上调用param
方法。无需使用硬编码别名
例如。
resultSet.getString(params[0]);
映射的简单示例:
<强>映射强>
<property name="propertyName" type="yourUserType">
<column name="columnName1" />
<column name="columnName2" />
</property>
或
@Type(type="com.package.usertypes.YourUserType")
@Columns(columns = {
@Column(name="columnName1"),
@Column(name="columnName2")
})
private CustomClass propertyName;
用户类型
public Object nullSafeGet(ResultSet resultSet,
String[] params,
Object owner) throws SQLException
{
resultSet.getString(params[0]); // value of 'columnName1' column
resultSet.getString(params[1]); // value of 'columnName2' column
//
}