当前位置: 首页 > 面试题库 >

JPA / EclipseLink-检索列名称

齐兴运
2023-03-14
问题内容

自从我上次使用1.4.X版本以来,我一直在尝试更新有关J​​ava的知识…我正在尝试使用1.6.0,尤其是Java Persistence
API(2.0)。

我设法创建了一个实体类。因为我能够存储和检索数据,所以它正在工作。

但是我无所事事,当我决定用表的列名填充JList时并没有成功…

这是一个简单的类,看起来像:

@Entity
@Table(name = "T_CURRENCY", schema = "APP")
public class Currency implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private Short id;
    @Basic(optional = false)
    @Column(name = "NAME")
    private String name;

    ...
}

有没有办法检索列名?

我找到了这个帖子。似乎是一个有效的解决方案,但我认为它可能更容易/更优雅?我不知道为什么,但是我期待一个已经完成的方法

TIA,

鲍勃


问题答案:

您可以解析列注释:

for (Field field : entity.getClass().getDeclaredFields()) {
   Column column = field.getAnnotation(Column.class);
   if (column != null) {
      columnNames.add(column.name());
   }
}

请注意,Column注释是可选的,因此必须确保已定义。如果不是这样,您将不得不咨询名称转换机制,这对于这个来说太过分了。



 类似资料:
  • 问题内容: 是否可以通过使用列的索引来获取列名?我浏览了API文档,但找不到任何东西。 问题答案: 你可以从元数据中获取此信息。参见 例如 你可以从那里获取列名称。如果你这样做 然后也会为你获取检索到的标签名称。

  • 在编写jpql查询时,我可以使用COLUMN()引用未映射的列(我知道它是eclipselink特定的)。在使用javax.persistence.criteria.CriteriaBuilder、javax.persistence.criteria.Predicate等构建标准时,有没有任何方法可以引用未映射的列? 我面临的问题:我有带有全文搜索列的postgresql表。我不希望它映射到实体对

  • 问题内容: 我想知道是否有一种方法可以为JPA中的特定持久性单元获取所有Entities类及其元数据。 通过元数据,我不仅指字段,还指它们的列名,长度,精度,数据类型,以及表名和我可以得到的任何东西。我尝试使用元模型,但我认为这仅适用于JPQL查询。 我需要向用户显示某个PU的所有活动实体,并且我不想在某些数组或数据库中对它们进行硬编码,我希望API告诉我它具有什么实体。并且,如果可能,获取每个实

  • 我想知道是否有办法获取JPA中特定持久单元的所有实体类及其元数据。 我所说的元数据不仅指字段,还指它们的列名、长度、精度、数据类型,以及表名和我能得到的任何东西。我尝试使用元模型,但我认为它更适合JPQL查询。 我需要能够向用户显示某些 PU 的所有活动实体,并且我不想在某个数组或数据库中对它们进行硬编码,我希望 API 告诉我它有哪些实体。此外,如果可能,请获取每个实体的托管实例。 我想我可以尝

  • 问题内容: 我正在编写一些工具,当对它应用任何查询时,该工具必须检索检索到的数据集的列名。 如果您熟悉phpMyAdmin,您将意识到SQL窗格可以执行查询并显示结果以及列名。我想知道查询会有多困难,它总是产生列名,而幕后的编程实际上是什么?就像它会分析查询,然后从查询中查找表名称,然后首先使用查询检索列名称,然后再检索数据吗? 有什么更好的办法吗? 已更新 对不起,不完整的信息,我想我必须说我在

  • 问题内容: 我有一个Client和Affiliate类,它是从Person类继承的。正在使用联接的继承策略类型- 它们中的每一个都与父类共享主键。由于没有鉴别符列,我们选择使用DescriptorCustomizer和ClassExtractor。但是它并没有真正让人们知道它是如何工作的,而且代码似乎也没有编译。如果有人给出一个带有代码片段的漂亮示例以供理解,那将是很好的。 问题答案: 根据上述文