1

@OneToMany としてマップされたゲッターを持つ Hibernate エンティティがあります。

@Entity
class Parent extends BaseParent {

    @OneToMany(cascade = {CascadeType.ALL}, mappedBy = "parent")
    public List<Child> getChildren() {
        return super.children;
    }

    public void setChildren(List<Child> list) {
        super.children = list;
    }
}

次のようなHQLを実行しようとすると:

select p 
from Parent p 
left join p.children c
where c.name='foobar'

次の例外が発生します。

org.springframework.orm.hibernate3.HibernateQueryException: could not resolve property: children of: ....Parent

保護されたフィールドに @OneToMany アノテーションを付けると、クエリが機能します。注釈をゲッターに配置できるようにするにはどうすればよいですか?

4

4 に答える 4

0

@OneToMany アノテーションに「mappedBy」プロパティがある場合、双方向マッピングを使用することを意味します。子の「親」の get/set またはフィールドが必要です。例:

@Entity
public class Parent {
    @OneToMany(mappedBy="parent")
    public Set<Child> getChildren() {
    ...
}

@Entity
public class Child{
    @ManyToOne
    public Parent getParent() {
    ...
}

参照: http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/#d0e1177

于 2009-02-07T00:47:12.117 に答える
0

はい、 @AccessType("property") アノテーションが必要でした。しかし、2 番目の答えも正しかったです。現在、関連付けに問題があります。これは素晴らしい情報です、助けてくれてありがとう!

于 2009-02-06T13:06:49.740 に答える