gpt4 book ai didi

java - (Java/Spring) 使用entityType.getJavaType() 访问类元素

转载 作者:行者123 更新时间:2023-12-02 08:52:41 25 4
gpt4 key购买 nike

我创建了一个通用的 Spring Entiy-Class“TableWithId”,旨在由其他类继承。

这是基类的摘录:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "__base_table")
public class TableWithId {
public static String EntityLabel = "All data";

@Id
@GeneratedValue
protected Long id;

因此,在我的子类中,我正在实现更多字段等。这非常有效,它按预期创建、填充和列出内容......

现在我希望能够获取所有实体的列表。这可以很好地工作,至少可以获取名称和类名。

entityManager.getMetamodel().getEntities()

根据实体名称,我还可以根据用户参数加载实体:

entityManager.createQuery("Select t from " + entityName + " t").getResultList();

现在有两件事我不能做:

(1) 访问类的静态 java 属性,我实际上想在运行时使用“entityType.getJavaType()”返回的 java 类访问“public static String EntityLabel”。事实上我想做这样的事情:

((TableWithId)  entityType.getJavaType()).EntityLabel

(2) 出于安全原因,我还喜欢通过不允许用户对不继承自 TableWithId 的其他实体进行查询来保护系统。我想做这样的事情:

entityType.getJavaType() instanceof TableWithId

感谢任何帮助:)

最佳答案

getJavaType 为您提供一个类实例。您可以通过反射访问静态字段:entityType.getJavaType().getField("EntityLabel").get(null)

如果你想测试一个类是否与其另一个父类(super class)或超接口(interface)相同,你应该使用 isAssignableFrom:

Class.forName("xxxx.TableWithId").isAssignableFrom(entityType.getJavaType())

关于java - (Java/Spring) 使用entityType.getJavaType() 访问类元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60684572/

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