2

最近、Javaで休止状態を使い始めました。

私はこのようなエンティティスタッフを持っています:

final public class Staff {
@Id @GeneratedValue
private int staffId;
private String firstName;
private String lastName;
private String Email;

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "auth_id", nullable = false)
private Authentication auth;
//And all the getters and setters
}

私の認証クラス:

final public class Authentication {

@Id @GeneratedValue
@Column(name="auth_id")
private int authId;
private String pwd;
private String secretQuestion;
private String secretAnswer;
//And all the getters and setters
}

ログインするには、メールアドレスとパスワードを確認する必要があります。だから私はハッシュマップを作成しました:

Map<String, String> requirements = 
            new HashMap<String, String>();
            requirements.put("Email", "example@example.com");
                requirements.put("auth.pwd", "password");

次に、クエリを実行しました:

Criteria criteria = session.createCriteria(currentClass);
            criteria.add(Restrictions.allEq(requirements));
staffList = (ArrayList<Staff>) criteria.list();

しかし、私はこの例外を受け取ります:

org.hibernate.QueryException: could not resolve property: auth.pwd of: models.Staff

私の質問は次のとおりです。エンティティ内のエンティティに制限を設定するにはどうすればよいですか?

私が言及することになっている他の情報を省略した場合は、お知らせください。ありがとう!

4

1 に答える 1

1

エンティティのauthプロパティにエイリアスを使用:Staff

Criteria crit = session.createCriteria(Staff.class, "staff");
crit.createAlias("auth", "a");  // Create alias for auth
crit.add(Restrictions.like("a.propertyName", propertyValue+"%"));
于 2013-11-06T07:26:13.220 に答える