gpt4 book ai didi

jpa - 在 jpa 中获取列名

转载 作者:行者123 更新时间:2023-12-04 11:31:24 24 4
gpt4 key购买 nike

我有一个查询工厂,它将列名作为属性来搜索该列。现在我将列的名称作为字符串传递,所以它是一种硬编码。如果实体的注释中列的名称发生变化,则“隐藏的依赖关系”会中断。

jpa 中有没有办法检索列的真实名称并在编译时提供它,以便我可以在查询中使用它?

最佳答案

当然,注解总是有反射(reflection)的。假设您有典型的 JPA 列定义:

    @Basic(optional = true)
@Column(name = "MY_COLUMN_NAME_DESC", nullable = true, length = 255)
public String getDesc() {
return desc;
}

然后检查 getter 方法产生列名值(示例来自 here ):
Method method = ... //obtain entity object
Annotation[] annotations = method.getDeclaredAnnotations();

for(Annotation annotation : annotations){
if(annotation instanceof Column){
Column myAnnotation = (Column) annotation;
System.out.println("name: " + myAnnotation.name());
System.out.println("value: " + myAnnotation.value());
}
}

该示例假定方法 property access在 JPA 实体中,但没有什么能阻止您通过将反射应用于字段来将其应用于字段级别。

关于jpa - 在 jpa 中获取列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2921451/

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