mappedBy不能在hibernate中使用继承。任何解决方法?

时间:2011-05-03 15:07:59

标签: hibernate orm jpa

考虑以下三个类

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@SequenceGenerator(name = "GenericIdGenerator",
sequenceName = "GENERIC_SEQ", initialValue = 1)
@Table(name = "tbl_datastores")
public abstract class DataStore implements Serializable {

    private int storeId;

    public getStoreId()
    {
        return this.storeId;
    }

    //..other code removed for brevity.
}

@Entity
@Table(name = "tbl_filedatastores")
public class FileDataStore extends DataStore {

    private Set<FieldDetails> fields;

    @OneToMany(mappedBy="datastore")
    public getFields()
    {
        return this.fields;
    }
    //..other code removed for brevity.
}

@Entity
@Table(name="tbl_fields")
@SequenceGenerator(name = "GenericIdGenerator",
sequenceName = "GENERIC_SEQ", initialValue = 1)
public class FieldDetails
{
    private int fieldId;
    private DataStore datastore;

    @Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="GenericIdGenerator")
    @Column(name="id", nullable=false, updatable=false)
    public int getFieldId() {
        return fieldId;
    }

    @ManyToOne
    @JoinColumn (name="datastore_id", referencedColumnName="id")
    public FileDataStore getDataStore(){
        return datastore;
    }
    //..other code removed for brevity.
}

当我运行此代码时,我收到以下错误...

org.hibernate.AnnotationException: mappedBy reference an unknown target entity  property: entities.FieldDetails.datastore in entities.FileDataStore.fields

我看到一些posts似乎暗示这是一个休眠问题,但我无法在任何地方找到合适的解决方案?

您能否建议一种在休眠或解决方法中映射此方法的方法?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

注意属性名称中字符大小写的不同。它应该是

@OneToMany(mappedBy="dataStore") 
...
public FileDataStore getDataStore(){ ... }

@OneToMany(mappedBy="datastore") 
...
public FileDataStore getDatastore(){ ... }