Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不可变对象的Hibernate CompositeUserType_Java_Hibernate - Fatal编程技术网

Java 不可变对象的Hibernate CompositeUserType

Java 不可变对象的Hibernate CompositeUserType,java,hibernate,Java,Hibernate,我正在hibernate中创建一个CompositeUserType,以将EAST和NORTH字段映射到坐标对象。目前,我的坐标对象是不变的,如果可能的话,我希望保持不变 我已经编写了我的nullSafeGet,从结果集中提取坐标并调用构造函数: @Override public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner)

我正在hibernate中创建一个
CompositeUserType
,以将
EAST
NORTH
字段映射到坐标对象。目前,我的坐标对象是不变的,如果可能的话,我希望保持不变

我已经编写了我的
nullSafeGet
,从结果集中提取坐标并调用构造函数:

@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被弃用的问题,但一次只能做一件事……)如果
isMutable()
返回
false
,则永远不会调用setPropertyValue(),因此您可以从中抛出
UnsupportedOperationException