Java 如何明确指定';逆'@JPA中的一夫一妻关系

Java 如何明确指定';逆'@JPA中的一夫一妻关系,java,generics,jpa,eclipselink,Java,Generics,Jpa,Eclipselink,我使用JPA鉴别器获得特定的子类,如下所示(为了简单起见更改了类名) 正如您所看到的,“Type”类与Foo类存在多对一关系,但是在泛型中,如Set不是Set的子类型,我们不能将Foo中的“reverse”关系指定为Set类型 因此,我的Foo类使用通配符,但也确保只有类型的子类可以设置为以下类型: @Entity @Table(name="FOO") public class Foo { //bi-directional one-to-many association to Type

我使用JPA鉴别器获得特定的子类,如下所示(为了简单起见更改了类名)

正如您所看到的,“Type”类与Foo类存在多对一关系,但是在泛型中,如
Set
不是
Set
的子类型,我们不能将Foo中的“reverse”关系指定为
Set类型

因此,我的Foo类使用通配符,但也确保只有类型的子类可以设置为以下类型:

@Entity
@Table(name="FOO")
public class Foo {

    //bi-directional one-to-many association to Type
    @OneToMany(mappedBy="foo")
    Set<?> types;

    public Set<?> getTypes() {
            return types;
    }

    public void setTypes(Set<? extends Type> types) {
            this.types = types;
    }   
} 
@实体
@表(name=“FOO”)
公开课Foo{
//双向一对多关联到类型
@OneToMany(mappedBy=“foo”)
设置类型;
公共集getTypes(){
返回类型;
}

public void setTypes(SetOneToMany注释可以指定targetEntity:

  @OneToMany(mappedBy="foo", targetEntity = Type.class)
  Set<?> types;
@OneToMany(mappedBy=“foo”,targetEntity=Type.class)
设置类型;
当泛型可用于定义类型,但在您的情况下是必需的时,这是可选的

  @OneToMany(mappedBy="foo", targetEntity = Type.class)
  Set<?> types;