У меня есть объект, который хотел бы расширить его, добавив несколько полей.Прежде всего, они не доступны для непосредственного изменения, они находятся в своем собственном JAR-файле.Вот базовые сущности:
@Entity
table(name="ACCOUNTDEF")
public class EtAccountDef
{
private String cNumber;
private List<EtAccount> accounts = new ArrayList();
public String getCNumber()
{
return cNumber;
}
public void setCNumber(String cNumber) {
this.cNumber = cNumber;
}
@OneToMany(fetch=FetchType.LAZY, cascade={javax.persistence.CascadeType.ALL}, mappedBy="accountDef")
public List<EtAccount> getAccounts() {
return accounts;
}
public void setAccounts(List<EtAccount> accounts) {
this.accounts = accounts;
}
}
, который является родительским классом, а ниже - дочерним классом:
@Entity
@Table(name="ACCOUNT")
public class EtAccount
{
private Double accountAmount;
private EtAccountDef accountDef;
private List<EtAccountItems> accountItems = new ArrayList();
@ManyToOne(fetch=FetchType.LAZY)
public EtAccountDef getAccountDef() {
return accountDef;
}
public void setAccountDef(EtAccountDef accountDef) {
this.accountDef = accountDef;
}
@OneToMany(fetch=FetchType.LAZY, cascade={javax.persistence.CascadeType.ALL}, mappedBy="account")
public List<EtAccountItems> getAccountItems() {
return accountItems;
}
public void setAccountItems(List<EtAccountItems> accountItems) {
this.accountItems = accountItems;
}
}
, поэтому я попробовал эти изменения для достижения своей цели.
@MappedSuperclass
public abstract class OtAbstractAccount extends EtAccount {
private Double AccountCommission;
@Column(columnDefinition="decimal(15,2)")
public Double getAccountCommission() {
return accountCommission;
}
public void setAccountCommission(Double accountCommission) {
this.accountCommission = accountCommission;
}
и затем расширить его на эту сущность:
@Entity
@Table(name="ACCOUNT")
public class OtCostumAccount extends OtAbstractAccount {
}
Поля теперь добавляются в базовую таблицу (EtAccount), но после компиляции я получаю сообщение об ошибке в Weblogic, которое говорит:
Причина: org.hibernate.AnnotationException: @OneToOne или @ManyToOne в EtAccount.accountDef ссылаются на неизвестную сущность: EtAccountDef
Я ввел эти две строки вмой файл ORM:
<mapped-superclass class="package.OtAbstractAccount" />
<entity class="package.OtCostumAccount" />
Удивительно, но когда я комментирую
<mapped-superclass class="package.OtAbstractAccount" />
от ORM, weblogic не выдает никакой ошибки, но когда я пытаюсь загрузить объект, создается другая ошибка, которая говорит:
Причина: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: ORA-00904: «OtCostumAccount». «DTYPE»: неверный идентификатор
IЯ запутался в этих ошибках, и я буду признателен за любую помощь.