gpt4 book ai didi

java - 如何在运行时检索 JPA 中实体的映射表名称?

转载 作者:IT老高 更新时间:2023-10-28 21:16:07 24 4
gpt4 key购买 nike

是否可以确定实体的 native 表名?

如果存在 Table 注释,这很容易:

entityClass.getAnnotation(Table.class).name()

但是如果没有Table注解呢?

Hibernate 通过 Configuration 提供此信息。类:

configuration.getClassMapping(entityClass.getSimpleName()).getTable().getName()

JPA 中有类似的东西吗?

最佳答案

这是我在 EclipseLink 中使用的方法(无映射文件):

/**
* Returns the table name for a given entity type in the {@link EntityManager}.
* @param em
* @param entityClass
* @return
*/
public static <T> String getTableName(EntityManager em, Class<T> entityClass) {
/*
* Check if the specified class is present in the metamodel.
* Throws IllegalArgumentException if not.
*/
Metamodel meta = em.getMetamodel();
EntityType<T> entityType = meta.entity(entityClass);

//Check whether @Table annotation is present on the class.
Table t = entityClass.getAnnotation(Table.class);

String tableName = (t == null)
? entityType.getName().toUpperCase()
: t.name();
return tableName;
}

关于java - 如何在运行时检索 JPA 中实体的映射表名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2342075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com