4

次のような 2 つのオブジェクト間に OneToMany/ManyToOne 関係があります。

public class Company {
    private Long compid;
    private String companyName;

    @OneToMany(mappedBy = "company", cascade = CascadeType.ALL)
    @LazyCollection(LazyCollectionOption.FALSE)
    private List<Employee> employees;
}

public class Employee {
    private Long empid;
    private String fstName;
    private String lstName;
    private String sal;

    @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @NotFound(action = NotFoundAction.IGNORE)
    @JoinColumn(name = "compid", nullable = true)
    private Company company;
}

を持っている社員を獲得したいcompany.companyName like xxxx%。私は次のようなものを試しました:

Criteria criteria = session.createCriteria(Employee.class);
criteria.createAlias("company", "company");
criteria.add(Restrictions.like("company.companyName ", "xxxx%"));
return criteria.list();

しかし、私はエラーが発生します:

could not resolve property: company.companyName of: Employee

このコードのどこに問題がありますか?

4

3 に答える 3

1

criteria.createCriteria代わりに使用する必要がありますcriteria.createAlias

于 2012-10-15T15:09:24.040 に答える
1

"company.companyName "基準の 3 行目のようにスペースを追加しました。タイプミスですか?そうでない場合は、それが問題の原因です。

于 2012-10-15T16:20:18.307 に答える
1

問題の原因を見つけました。これは私の愚かなエラーです。元のコードでは、compny.companyName を入力しました。会社の「a」を忘れました。非常にうまく機能します。

于 2012-10-16T06:17:17.803 に答える