Есть ли способ, чтобы переназначить @Id
в дочерней сущности после того, как он был назначен на некоторое поле в родительской сущностиHibernate/JPA: Можно ли переопределить поле @Id?
Например:
@MappedSuperclass
@Access(AccessType.FIELD)
public abstract class Parent implements Serializable {
@Id
protected Integer parentId;
public Integer getId() {
return parentId;
}
public void setId(Integer id) {
this.id = parentId;
}
}
@Entity
@Access(AccessType.FIELD)
public class Child extends Parent implements Serializable {
/*
What should be added to this entity to re assign the @Id to a new field and
make the parentId field just an ordianry field in the Child, not the entity Id
*/
@Id
private Long childId;
}
Я попытался использовать @AttributeOverride
, но все это может обеспечить это переименование имени столбца id.
Я думаю, что это невозможно. Как это следует сопоставить с RDB? Это, безусловно, невозможно для «Единой таблицы для каждой иерархии» и «Таблица для каждого подкласса». Зачем вам эта функция? (Btw: Почему ваш дочерний подкласс Parent?) – isnot2bad
@ isnot2bad У меня есть общий объект, который обертывает id, версию и некоторые другие поля, которые разделяются между множеством сущностей. и приложение уже построено с учетом общей сущности. но для некоторых новых объектов, которые используют одни и те же поля, кроме типа и имени поля Id. Однако они все еще сохраняют старый столбец Идентификатор, но как обычное поле. – fujy