我正在学习Hibernate和JPA,而且我一直在找这个术语。有人可以用实用和教学的方式解释我,这个术语是什么,以及它与JPA / Hibernate / Databases的关系?
我想知道它是否是一种包含任何类型数据的数据结构,但我不确定它是否真的如此。另外,我不知道它在与JPA的查询中的关系......谁能给我一些亮点?
伙计们,不要沉淀。我在谷歌,dictionary(英语),维基百科,社区(stackoverflow)以及JPA Tuple API上搜索过。
以下是我的一些搜索字词:
Java EE 6的所有文档都说有关Tuple的内容如下:
用于提取查询结果元组的元素的接口。
这解释了“很多”。
我找不到具体,扎实,简洁的东西,真正解释它是什么。像我这样的一些凡人很难生,不知道一切。我本身不会说英语,我无法访问宇宙的全部内容,有时我会尝试使这个社区在问题和答案中最实用,简单,友好和可敬。这永远不够。不要以为我在来这里之前没有研究任何东西,我是无知的,懒散的,懒惰的等等。这是先入为主!
为了上帝的爱......我用翻译来写作,而我对某些事情没有实际的理解,这些事情对别人来说是如此容易理解。我的问题甚至遵循了关于stackoverflow的问题规则。当我问一些事情时,它总是出现的。当我尝试给出答案时,我总是先尝试研究,并尽可能地回应其他用户。让我有些懊悔有时参加一些社区...我要求知识,而不是地位,我相信其他人可能会有同样的问题。人们常常把这个社区视为禁忌,而不是交换知识的地方。再次......为了上帝的爱...
元组是一个从数学中得出的通用术语,它只是指“按特定顺序排列的几个值”。如果你能说“给我这个东西的第二价值”,那么事情就是一个元组。
他们没有单一的符号,但你可以想象(1,2,3)
,("a","b","c")
和("John", "Smith", 12, false)
都是元组的例子,分别有3个,3个和4个项目。请注意,元组的概念对值没有限制,因此它们可以有不同的类型。
从技术上讲,List
,String[]
和Vector
都是元组。但是在像Java这样的语言中,这个术语主要用于项目类型不同的时候 - 否则我们会谈论序列。
在像JPA这样的库中,该术语可与术语记录和行互换使用。元组可以用特殊的类来表示,但Java中常用的一种方法就是拥有一个qazxsw poi。
如前所述,Object[]
是一个有序的事物清单。它有助于理解为什么要使用这样的东西。考虑到数据库中有一个表,无论出于何种原因,您只想从该表中选择一些列。从这样的查询中,您可以获得对象和元组。例如,考虑一个有两个字段的实体,Tuple
和latitude
:
longitude
如果只想查询纬度和经度列,您在哪里放置结果?其中一种方法是使用@Entity
public class User {
@Id @GeneratedValue private Long id;
private BigDecimal latitude;
private BigDecimal longitude;
:
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"));
});
有一个Tuples
属性,可以通过查询填写,然后您可以使用它。这比alias
更方便。此外,Object
支持Java Generics,因此您可以拥有比使用TupleElement
更多的类型安全性。