在JPA,关系数据库等中,什么是元组?[已关闭]

2022-09-04 07:00:24

我正在研究Hibernate和JPA,我一直在寻找这个术语。有人可以用一种实用和教学的方式解释我,这个术语是什么,以及它与JPA / Hibernate / Databases的关系如何?

我想知道它是否是一种包含任何类型数据的数据结构,但我不确定它是否真的如此。另外,我不知道它与JPA的查询中的关系...谁能给我一些光?

编辑

伙计们,不要沉淀。我在谷歌上搜索过,在字典(英语),维基百科上,在社区(stackoverflow)中搜索过,还有JPA Tuple API。

以下是我的一些搜索词:

  • 什么是元组
  • 数据库元组
  • JPA 元组

Java EE 6 关于元组的所有文档都如下:

用于提取查询结果元组元素的接口。

这解释了“很多”。

我找不到具体,坚实,简洁,真正解释它是什么的东西。对于像我这样的凡人来说,这很困难,生来就什么都不知道。我不会说英语,我无法接触到宇宙的全部内容,有时我试图使这个社区成为问题和答案中最实用,最简单,最友好和最受尊敬的社区。这永远不够。不要以为我在这里之前没有研究过任何东西,我是无知的,外行的,懒惰的等等。这是先入之见!

为了神的爱...我用翻译来写作,我对某些对别人来说很容易理解的事情没有实际的了解。我的问题甚至遵循了这里强加的关于堆栈溢出的问题的规则。当我问一些事情时,它总是一些东西。当我试图给出答案时,我总是试图在之前进行研究,并尽可能地回应其他用户。给我一些悔恨,有时参加一些社区...我要求知识,而不是地位,我相信其他人可能会有同样的问题。人们通常把这个社区当作禁忌,而不是一个交流知识的地方。再。。。为了神的爱...


答案 1

如前所述,a 是事物的有序列表。它有助于理解为什么你会使用这样的东西。假设数据库中有一个表,并且无论出于何种原因,您只想从该表中选择一些列。从这样的查询中,您可以获取对象和元组。例如,考虑一个具有两个字段的实体,以及:Tuplelatitudelongitude

@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"));
});

如您所见,有一个由查询填充的属性,然后可以在以后使用。这比 .此外,还支持 Java 泛型,因此您还可以拥有比 使用 .TuplesaliasObjectTupleElementObjects


答案 2

元组是一个取自数学的通用术语,它的意思是“按特定顺序排列的几个值”。如果你能说“给我这个东西的第二个值”,那么这个东西就是一个元组。

它们没有单一的表示法,但您可以想象,并且都是元组的示例,分别具有3,3和4项。请注意,元组的概念对值没有限制,因此它们可以具有不同的类型。(1,2,3)("a","b","c")("John", "Smith", 12, false)

从技术上讲,a 和 都是元组。但是在像Java这样的语言中,这个术语主要在项目是不同类型的时使用 - 否则我们谈论序列。ListString[]Vector

在像 JPA 这样的库中,该术语与术语记录互换使用。元组可以用特殊类来表示,但是在Java中经常使用的一种方法是拥有一个.Object[]


推荐