当前位置: 首页 > 知识库问答 >
问题:

检索JPA实体列表和元数据

祁博雅
2023-03-14

我想知道是否有办法获取JPA中特定持久单元的所有实体类及其元数据

我所说的元数据不仅指字段,还指它们的列名、长度、精度、数据类型,以及表名和我能得到的任何东西。我尝试使用元模型,但我认为它更适合JPQL查询。

我需要能够向用户显示某些 PU 的所有活动实体,并且我不想在某个数组或数据库中对它们进行硬编码,我希望 API 告诉我它有哪些实体。此外,如果可能,请获取每个实体的托管实例

我想我可以尝试使用反射来获取所有带有@Entity注释的类,但它不会很漂亮,并且很难知道哪个属于特定的PU,所以如果api已经公开了这些信息,那就太好了。

我更喜欢JPA兼容的解决方案,但是如果不可行,Hibernate或EclipseLink特定的答案也可以。

谢啦!

共有2个答案

饶骁
2023-03-14

实体在定义时独立于任何持久性单元。它们在持久性.xml的定义中与持久性单元相关联。管理给定持久性单元的实体管理器的 EntityManagerFactory 似乎没有任何 API 来获取它所管理的实体列表。Hibernate的SessionFactory是EntityManagerFactory的对应物,它确实有API来获取类元数据(http://docs.jboss.org/hibernate/core/3.5/api/org/hibernate/SessionFactory.html)。

吕俊美
2023-03-14

是的,您可以从EntityManager获取所有实体和有关实体的相应元数据信息。

EntityManager.getMetamodel()将允许您访问Metamodel接口,您可以从其中访问EntityTypeManagedType以获取实体的属性。

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

  • 我假设有一种方法,因为XRMToolBox中的工具会用这些值加载下拉。

  • 问题内容: 自从我上次使用1.4.X版本以来,我一直在尝试更新有关J​​ava的知识…我正在尝试使用1.6.0,尤其是Java Persistence API(2.0)。 我设法创建了一个实体类。因为我能够存储和检索数据,所以它正在工作。 但是我无所事事,当我决定用表的列名填充JList时并没有成功… 这是一个简单的类,看起来像: 有没有办法检索列名? 我找到了这个帖子。似乎是一个有效的解决方案,

  • 问题内容: 我在SQL Server中有六个视图需要在Teradata中复制,但是我找不到与SQL元数据表等效的TD。我想复制以下功能(我认为这是不言而喻的): 我也想知道在线上是否有可用的Teradata参考;我碰到的一切似乎都是广告,而不是实用的信息。 问题答案: 所有Teradata系统表都存储在DBC模式下。 对于列,它是dbc.columns 对于视图,它是dbc.tables,在名为t

  • 我正在创建一个web程序,用spring boot、tomcat和JPA映射商店的占有率。我已经创建了成员模型/服务/控制器,当我尝试更新、创建、删除它或从中获取信息时,它工作正常。 然而,商店也没有被创建,当我用ownerId创建一个商店时,我会收到一条错误消息,说: 错误消息 [org.springframework.http.converter.httpMessageEndableExcep

  • 我正在回答这个问题,在单个表的日期、整数和字符串数据类型字段上执行多列搜索?并且该方法必须返回Java 8中类型specification 的结果。 实际上,我想在关联实体中搜索,以及全局搜索的一部分。使用是否可能? 我有和@onetomany关系。 EmployeeController.java java 当我点击时,我希望在表和表中进行搜索(可能使用类似)。这可能吗?如果是,我们怎么做? 有什