如何将下面的查询转换为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();