2017-02-21 21 views
1

我在他们的网站的dropwizard文档部分跟踪了代码示例,并设法让hibernate工作,通过ID找到我的User对象。它与下面的代码工作得很好:Dropwizard Hibernate - 通过不是ID的值查找实体?

// Finds a single user, by their ID. 
public User findOne(String id) 
{ 
    get(id); 
} 

现在,我的下一个问题是,我也想与此类似,因此我将能够通过用户名找到的东西 - 对各条功能(包括保留唯一的用户名在注册阶段)

我试图调节我的代码如下:

// Finds a single user, by their ID. 
public User findOne(String name) 
{ 
    get(name); 
} 

但是,这并不工作,逸岸会在表格中搜索值,其中ID字段相匹配的名字......我猜测这是默认行为,以automati cally搜索主键字段或什么?

无论如何,有没有办法让我的搜索发生在另一个领域?

回答

1

您应该使用Criteriaorg.hibernate.Criteria

public List<User> findOne(String name) { 

    Criteria c = criteria().add(Restrictions.eq("name", name)); 
    return list(c); 
} 

,如果你需要

Criteria c = criteria() 
      .add(Restrictions.eq("accountId", accountId)) 
      .add(Restrictions.eq("email",email)); 
    return Optional.fromNullable(uniqueResult(c)); 
+0

其实我已经试过这一点,你可以混合,和它的作品,如果我打通过我的休息DAO端点 - 但在尝试对认证者做任何事情时不能使用。 – MickeyThreeSheds