2016-05-07 21 views
0

私はエンティティUsersを持っています。Hibernate SQLQuery、addScalar() - クラス内のオブジェクトにアクセスします。

@Entity 
@Table(name="user") 
public class Users implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @EmbeddedId 
    private UsersPK ids; 

    private String password; 

このエンティティにはUsersPKオブジェクトがあります。 UsersPKは、Usersの主キーを含む単なるクラスです。たとえば、username。また、主キーのゲッターとセッター。

今、データベースにアクセスします。

  • ステータス500 - -

    Session session = entityManager.unwrap(Session.class); 
    SQLQuery query = session.createSQLQuery("//working sql statement here"); 
    query.setParameter("username", username); 
    query.setParameter("password", password); 
    
    query.setResultTransformer(Transformers.aliasToBean(Users.class)); 
    query.addScalar("username"); 
    query.addScalar("password"); 
    
    Users user1 = (Users) query.uniqueResult(); 
    
    return user1; 
    

    は私がの誤差が生じていますユーザー名のセッターを見つけることができませんでした。

ユーザー名はUsersクラスではなくUserクラスにありますが、UsersクラスにはUserPKオブジェクトがあると思います。

addScalar機能で使用できるように、このオブジェクトにアクセスするにはどうすれば問題があるのですか。

私は宣言しようとしましたquery.setResultTransformer(Transformers.aliasToBean(UsersPK.class)); まだ動作しません。

答えて

0

この

query.addScalar("username"); 
query.addScalar("password"); 
query.setResultTransformer(Transformers.aliasToBean(Users.class)); 
ため、この

query.setResultTransformer(Transformers.aliasToBean(Users.class)); 
query.addScalar("username"); 
query.addScalar("password"); 

を変更してください

関連する問題