这是实体Utente;如您所见,存在一个场autenticazione,它是另一个实体,称为Autenticazione

@Entity
@Table(name = "utente")
@Component
public class Utente implements Serializable{
    ...
    @OneToOne(mappedBy = "utente", cascade = CascadeType.ALL)
    @Valid
    private Autenticazione autenticazione;
    ...
}


这是实体Autenticazione

@Component
@Entity
@Table(name = "autenticazione")
public class Autenticazione implements Serializable{
    ...
    @OneToOne(targetEntity=Utente.class)
    @JoinColumn(name="utente", referencedColumnName="id")
    private Utente utente;

    @Column(name = "username")
    @Size(min = 3, max = 20)
    @Pattern(regexp="^[A-Za-z0-9.-_]*$")
    private String username;
    ...
}


我必须进行查询,以允许我从数据库中获取对象Utente,并按对象Autenticazione的字段用户名(即实体Utente的字段)的值进行搜索。

我应该做这样的事情:

Criteria criteria = getCurrentSessionFactory().createCriteria(Utente.class);
criteria.add(
             Restrictions.eq("autenticazione.username",
             utenteForSearch.getAutenticazione().getUsername())
             );


是否可以使用Hibernate并将作为实体本身的实体的字段用作“哪里”?

谢谢

最佳答案

评论者(@Dragan Bozanovic)是正确的,您想要这样:

Criteria criteria = getCurrentSessionFactory().createCriteria(Utente.class);
crit.createAlias("autenticazione", "autenticazione");
criteria.add(
             Restrictions.eq("autenticazione.username",
             utenteForSearch.getAutenticazione().getUsername())
             );

关于java - 如何使用Hibernate进行查询并在作为对象的字段上应用约束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35655681/

10-13 00:25