jpa - 如何使方法只接受实体

标签 jpa generics entity

我想制作一个接受任何类型的 javax.persistence.Entity 对象的方法。

我试过了。

通用方法

import javax.persistence.Entity;

public <T extend Entity> void GenericMethod(T entity) {...}

用于测试的实体

@Entity
public class EntityObject {...}

测试

GenericMethod(new EntityObject());

我在编译时遇到错误,类型中的方法 GenericMethod(T) 不适用于参数 (EntityObject)。

如何限制方法只接受带有@Entity 注释的对象???

最佳答案

简短的回答是你不能这样做。至少不是作为编译时检查。 T extend Entity 只有在 Entity 是接口(interface)或类时才有效;在您的情况下,这是一个注释,JLS 禁止这样做。

唯一的方法是通过运行时检查,像这样:

private static void test(EntityObject entityObject) {
    Annotation [] all = entityObject.getClass().getAnnotations();
    // filter on the ones you care
}

但这当然只能在运行时起作用。

关于jpa - 如何使方法只接受实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55896210/

相关文章:

java - JPA:更新祖父实体时如何更新孙子实体?

java - JPA的AttributeConverter和Hibernate的ColumnTransformer在属性加解密方面的区别

typescript :获取实例的通用类型

c# - 将存储库模式与 Entity Framework 结合使用时分离的实体

java - 使用泛型 : Instantiating an object of a generic class with parent and child values in generic

java - 有什么简单的方法可以解释为什么我不能做 List<Animal> animals = new ArrayList<Dog>()?

.net - 创建我们自己的 UoW/Repository 与直接使用 DbContext 之间的区别

java - 我可以为父表的外键列定义不同的类型吗?

java - 使用 JPA 存储库在后端过滤枚举

java - 使用jpql查找包含给定集合的所有元素的集合的项目