Hibernate自定义类型访问结果集

时间:2014-06-18 18:11:11

标签: java hibernate

我的类实现了Hibernate自定义用户类型。实现UserType,ParameterizedType。

public Object nullSafeGet(ResultSet resultSet, String[] params, Object owner) throws SQLException {

我需要通过resultset参数访问状态字段。所以我有两种访问方式。

  1. 通过给出列号resultSet.getString(17);

  2. 指定列名称。 Hiberbate返回

    resultSet.getString("STATUS13_51_0_"); //STATUS13_51_0_
    
  3. Hibernate使用自己的别名生成查询,因此我可以使用别名访问而不是列名。

    问题:每次从状态列访问我需要访问的不同地方调用此类。

    由于传入查询不同,接收列号和生成的字段别名不同。

    你能建议我克服这种情况的方法是什么?

1 个答案:

答案 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
   //
}