1
나는이 단체가 가입 테이블의 열을 얻을 : 만 idUser, 사용자와 idPerfil을 얻고 싶은최대 절전 모드 기준 투영
public class User
{
private Integer idUser;
private String user;
private String password;
private Perfil perfil;
Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "idUser", unique = true, nullable = false)
public Integer getIdUser()
{
return this.idUser;
}
public void setIdUser(Integer idUser)
{
this.idUser = idUser;
}
@Column(name = "user", nullable = false)
public String getUser()
{
return this.user;
}
public void setUser(String user)
{
this.user = user;
}
@Column(name = "password", nullable = false)
public String getPassword()
{
return this.password;
}
public void setPassword(String password)
{
this.password = password;
}
@OneToOne
@JoinColumn(name = "idPerfil", nullable = false)
public Perfil getIdPerfil()
{
return idPerfil;
}
public void setIdPerfil(Perfil idPerfil)
{
this.idPerfil = idPerfil;
}
}
public class Perfil
{
private Integer idPerfil;
private String perfil;
private String description;
Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "idPerfil", unique = true, nullable = false)
public Integer getIdPerfil()
{
return this.idPerfil;
}
public void setIdPerfil(Integer idPerfil)
{
this.idPerfil = idPerfil;
}
@Column(name = "description", nullable = false)
public String getDescription()
{
return this.description;
}
public void setDescription(String description)
{
this.description = description;
}
}
을; 는 I 이용 :
Session session = HibernateUtil.openSession();
try
{
Criteria criteria = session.createCriteria(User.class);
ProjectionList proList = Projections.projectionList();
proList.add(Projections.property("idUser"), "idUser");
proList.add(Projections.property("user"), "user");
proList.add(Projections.property("idPerfil"), "idPerfil");
criteria.setProjection(proList);
criteria.setFetchMode("idPerfil.idPerfil", org.hibernate.FetchMode.JOIN);
criteria.setResultTransformer(Transformers.aliasToBean(User.class));
List<User> list = criteria.list();
return list;
}
catch (Exception e)
{
throw e;
}
finally
{
session.close();
}
엔티티 사용자는 내가 especify 속성의 값을 가져, 잘 작동하지만 idPerfil에서 나는 모든 값 속성을 얻고 난 단지 idPerfil를 원한다. 어떻게하면 쿼리를 할 수 있습니까? idPerfil 별칭을 추가
덕분에, 사람 :
목록의 각 요소는 객체 [] 배열 될 것입니다. 나는 월요일에 그것을 시험해보고 작동하는지 말해 주려고한다. – user3550529
나는 그것을 사용한다. 그러나 criteria.setResultTransformer (Transformers.aliasToBean (User.class));를 사용할 때 오류가 발생한다. – user3550529
org.hibernate.property.BasicPropertyAccessor $ BasicSetter.set HHH000091 : 예상 유형 : com.entity.Perfil, 실제 값 : java.lang.Integer 오류 org.hibernate.PropertyAccessException : com.entity.User의 setter를 호출하는 동안 IllegalArgumentException이 발생했습니다. .idPerfil org.hibernate.PropertyAccessException : com.User.idPerfil의 setter를 호출하는 중에 IllegalArgumentException이 발생했습니다. criteria.setResultTransformer (Transformers.aliasToBean (User.class))를 사용하지 않으면; idPerfil은 정수처럼 보이며 객체 – user3550529