如何在Hibernate Panache中只选择部分列的db查询?



如何将下面的查询转换为Hibernate Panache?(使用PostgresSql)

Select t.id, t.name from tableName as t where t.lastName = "abc";

对于返回所有列,它是直接的。

Select * from tableName as t where t.lastName = "abc";
//becomes 
panacheRepo.find("lastName", lastName);

当我想只选择部分列时,是否有类似的方法?

或者如果Hibernate Panache不可能,那么普通Hibernate呢?

使用Panache,您可以使用查询投影:

@Entity(name = "Person")
@Table(name = "tablename")
public class Person extends PanacheEntity {
public String name;
public LocalDate birth;
public Status status;
}
@RegisterForReflection 
public class PersonName {
public final String name; 
public PersonName(String name){ 
this.name = name;
}
}
// only 'name' will be loaded from the database
Person.find("status", Status.Alive).project(PersonName.class);

如果您使用的是普通Hibernate,您可以在HQL或SQL查询中指定select子句。

例如:

List<Object[]> results = session.createQuery(
"select p.name, p.status from Person p", Object[].class)
.getResultList();

相关内容

  • 没有找到相关文章

最新更新