Java 如何使用Hibernate进行查询并对对象字段应用限制
这是实体Utene;如您所见,有一个字段autenticazione,它是另一个实体,称为autenticazioneJava 如何使用Hibernate进行查询并对对象字段应用限制,java,sql,hibernate,spring-mvc,restrictions,Java,Sql,Hibernate,Spring Mvc,Restrictions,这是实体Utene;如您所见,有一个字段autenticazione,它是另一个实体,称为autenticazione @Entity @Table(name = "utente") @Component public class Utente implements Serializable{ ... @OneToOne(mappedBy = "utente", cascade = CascadeType.ALL) @Valid private Autentica
@Entity
@Table(name = "utente")
@Component
public class Utente implements Serializable{
...
@OneToOne(mappedBy = "utente", cascade = CascadeType.ALL)
@Valid
private Autenticazione autenticazione;
...
}
这是实体autenticatazione
@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;
...
}
我必须进行一个查询,允许我从数据库中获取对象utete,通过对象autenticatazione的字段username的值进行搜索,该字段是实体utete的字段
我应该这样做:
Criteria criteria = getCurrentSessionFactory().createCriteria(Utente.class);
criteria.add(
Restrictions.eq("autenticazione.username",
utenteForSearch.getAutenticazione().getUsername())
);
是否可以使用Hibernate并将实体本身的字段用作“where”
谢谢评论者(@Dragan Bozanovic)是正确的,你想要这个:
Criteria criteria = getCurrentSessionFactory().createCriteria(Utente.class);
crit.createAlias("autenticazione", "autenticazione");
criteria.add(
Restrictions.eq("autenticazione.username",
utenteForSearch.getAutenticazione().getUsername())
);
创建一个。