У меня есть неизменяемый объект, который является частью объекта Hibernate, сохраняемого с использованием сопоставления компонентов. Пример, PinDrop
соответствует таблице, которая имеет поле типа неизменного Point
:Отображение компонента гибернации неизменяемого объекта
public class PinDrop {
private String name;
private Point location;
// Getters and setters for name and location
}
// Immutable Point
public class Point {
private final double x;
private final double y;
// Getters for x and y, no setters
}
В моей PinDrop.hbm.xml
:
<property name="name" column="name" type="string"/>
<component name="location" class="Point>
<property name="x" column="location_x" type="double"/>
<property name="y" column="location_y" type="double"/>
</component>
Это не работает, потому что во время выполнения Hibernate жалуется, что Point
не имеют сеттеры для x
и y
. Есть ли способ использовать неизменяемый объект как компонент постоянного объекта Hibernate?
Последующие действия: Я не использую аннотации, а скорее hbm.xml
. Ни mutable
, ни immutable
являются действительными атрибутами на component
и property
в hbm.xml
.
Вам нужно сделать поля 'final'? –