Estoy creando un CompositeUserType
en hibernación para asignar los campos EAST
y NORTH
a un objeto Coordinate. Actualmente mi objeto Coordinate es inmutable, y me gustaría mantenerlo así si es posible.Hibernate CompositeUserType para objeto inmutable
He escrito mi nullSafeGet
, tirando de las coordenadas del conjunto de resultados y llamando al constructor:
@Override
public Object nullSafeGet(ResultSet rs, String[] names,
SessionImplementor session, Object owner)
throws HibernateException, SQLException {
Integer easting = (Integer)Hibernate.INTEGER.nullSafeGet(rs, names[0]);
Integer northing = (Integer)Hibernate.INTEGER.nullSafeGet(rs, names[1]);
if(easting==null || northing==null)
return null;
return new Coordinate(easting, northing);
}
no sé qué hacer con setPropertyValue
, que parece querer establecer las coordenadas de uno en uno un momento. Es posible instanciar un objeto inmutable con CompositeUserType
, o estoy tratando de hacer lo imposible?
(también tratando de averiguar qué hacer con Hibernate.INTEGER está obsoleta, pero una cosa a la vez ...)