正如所说,一个Tuple是事物的有序列表。它有助于理解why你会用这样的东西。假设您在数据库中有一个表,并且出于某种原因您只想从该表中选择某些列。从这样的查询中,您可以获得对象和元组。例如,考虑一个具有两个字段的实体,latitude and longitude:
@Entity
public class User {
@Id @GeneratedValue private Long id;
private BigDecimal latitude;
private BigDecimal longitude;
当你想查询的时候only纬度和经度列,你把结果放在哪里?实现此目的的方法之一是使用Tuples:
// With objects, the alias information is lost.
List<Object[]> s = em.createQuery("select u.lattitude as lattitude, u.longitude as longitude from User u", Object[].class).getResultList();
s.stream().forEach((record) -> {
System.out.println(record[0]+","+record[1]);
});
// With Tuples, the alias information is retained.
List<Tuple> t = em.createQuery("select u.lattitude as lattitude, u.longitude as longitude from User u", Tuple.class).getResultList();
t.stream().forEach((record) -> {
System.out.println( record.get("lattitude") +","+record.get("longitude"));
});