Отображение OneToMany с аннотациями объединенного наследования: - PullRequest
1 голос
/ 30 августа 2011

У меня есть следующие классы доменов:

@Entity
@Table(name="ADDRESSBOOK_FIELD")
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class AbstractAddressbookField {
   private int dbID;
   private Addressbook addressbook;

   public AbstractAddressbookField() {
   }

   @Id
   @GeneratedValue(strategy=GenerationType.AUTO)
   public int getId() {
      return dbID;
   }

   public void setId(int id) {
      this.dbID = id;
   }

   @ManyToOne
   @JoinColumn(nullable=false)
   public Addressbook getAddressbook() {
      return addressbook;
   }

   public void setAddressbook(Addressbook addressbook) {
      this.addressbook = addressbook;
   }

}

.

@Entity
@Table(name="DATE_FIELD")
public class DateField extends AbstractAddressbookField {
    public DateField() {

    }
}

.

@Entity
@Table(name="NEW_ADDRESSBOOK")
public class Addressbook {
    private int dbID;
    private Set<DateField> dateFields = new HashSet<DateField>();

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    public int getDbID() {
        return dbID;
    }

    public void setDbID(int dbID) {
        this.dbID = dbID;
    }

    @OneToMany(mappedBy="Addressbook", cascade={CascadeType.ALL})
    public Set<DateField> getDateFields() {
        return dateFields;
    }

    public void setDateFields(Set<DateField> dateFields) {
        this.dateFields = dateFields;
    }
}

Мои пакеты находятся в процессеотсканировал правильно, чтобы собрать все сопоставления, но я получаю следующее исключение:

Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: fields.DateField

Я не уверен, почему это так, поскольку класс явно сопоставлен.

Ответы [ 2 ]

1 голос
/ 11 апреля 2012

Я думаю, что вашей проблемой является заглавная буква в:

@OneToMany(mappedBy="Addressbook", cascade={CascadeType.ALL})
public Set<DateField> getDateFields() {
   return dateFields;
}

используйте mappedBy="addressbook вместо.

1 голос
/ 30 августа 2011

Похоже, что этот объект не отображается в вашем файле 'persistence.xml'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...