2011-08-30 35 views
1

我有以下域類:一對多映射與加入傳承註解:

@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 

我不確定這是爲什麼,作爲類顯然映射至。

回答

1

看起來像那個實體沒有映射到你的'persistence.xml'文件中。

+0

不幸的是,包含我的域類的包被正確指定,所以我想知道是否有其他需要更改的東西。 – mogronalol

1

我覺得你的問題是在大寫字母:

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

使用mappedBy="addressbook代替。