Hibernate SQLQuery,addScalar() - 访问类

时间:2016-05-07 12:43:00

标签: java spring hibernate spring-mvc java-ee

我有一个实体,用户。

@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主键的类。例如,用户名。此外,主键的getter和setter。

现在,我想访问数据库。

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;

我遇到错误 -

  • 状态500 - 找不到用户名的设置者。

我认为这是因为用户名位于UsersPK类而不是Users类,但Users类有一个UserPK对象。

这里的问题是如何访问该对象,以便我可以在addScalar函数中使用它。

我已尝试声明query.setResultTransformer(Transformers.aliasToBean(UsersPK.class)); 仍然没有工作。

1 个答案:

答案 0 :(得分:0)

尝试更改此

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

这个

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