2011-02-08 41 views
8

Tôi đang tạo một CompositeUserType trong chế độ ngủ đông để ánh xạ các trường EASTNORTH cho đối tượng Tọa độ. Hiện tại đối tượng Tọa độ của tôi là không thay đổi và tôi muốn giữ nó theo cách đó nếu có thể.Hibernate CompositeUserType cho đối tượng bất biến

Tôi đã viết tôi nullSafeGet, kéo các tọa độ từ ResultSet và kêu gọi các nhà xây dựng:

@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); 
} 

Tôi không biết phải làm gì với setPropertyValue, mà dường như muốn thiết lập các coords một lúc một thời gian. Có thể khởi tạo một đối tượng bất biến với CompositeUserType hoặc tôi đang cố gắng làm điều không thể?

(Cũng cố gắng để tìm ra những việc cần làm về Hibernate.INTEGER bị phản đối, nhưng có một điều tại một thời điểm ...)

Trả lời

11

setPropertyValue() không bao giờ được gọi là nếu isMutable() lợi nhuận false, vì vậy bạn có thể ném UnsupportedOperationException từ nó .

Các vấn đề liên quan