Я создаю CompositeUserType
в спящем режиме, чтобы сопоставить поля EAST
и NORTH
с объектом Coordinate.В настоящее время мой объект Coordinate является неизменным, и я хотел бы сохранить его таким, если это возможно.
Я написал свой nullSafeGet
, извлекая координаты из ResultSet и вызывая конструктор:
@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);
}
Я не знаю, что делать с setPropertyValue
, что выглядитхотеть установить координаты по одному.Можно создать экземпляр неизменяемого объекта с помощью CompositeUserType
, или я пытаюсь сделать невозможное?
(Также пытаюсь выяснить, что делать с устаревшим Hibernate.INTEGER, но по одной вещи за раз...)