Мой класс «Resource_Image» - это подкласс ресурса, и все работает так, как ожидалось, но в моей базе данных обе таблицы содержат столбец «СТРУКТУРА». Зачем? Использование setRs в экземпляре Resource_Image устанавливает Resource_Structure на суперкласс, но почему у меня есть столбец «СТРУКТУРА» в таблице «res_images» тоже, это не имеет смысла? См. Код внизу. Есть идеи?JPA - отключить наследование на подклассе
@Entity
@Table(name="res")
@Inheritance(strategy=InheritanceType.JOINED)
public class Resource {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@JoinColumn(name = "STRUCTURE",nullable=false)
private Resource_Structure rs;
//getter and setter for rs
public final void setRs(Resource_Structure rs) {
this.rs = rs;
}
//...
}
@Entity
@Table(name="res_images")
public class Resource_Image extends Resource
{
@Column(name = "WIDTH",nullable=false)
private int width;
@Column(name = "HEIGHT",nullable=false)
private int height;
//NO getter and setter for rs
}
Это только отрывок вовлеченных свойств/классов. СТРУКТУРА и сеттеры/геттеры были определены только в таблице res. Но он отображается в базе данных по res и res_image (да, я использую автоматическую генерацию DLL). После сохранения этот столбец является нулевым в таблице res_image и правильно устанавливается в таблице res. Столбец STRUCTURE в res_image полностью бесполезен, но доступен. По-моему, столбец создан из-за возможности перезаписать это свойство, есть ли способ сказать JPA «это свойство существует только в суперклассе, а не может быть перезаписано»? –