规范JPA-内部+ where子句

时间:2019-09-16 10:24:46

标签: java spring jpa spring-data-jpa specifications

我必须连接两个表,并使用带有规范和JPA的Where过滤结果。但是我对它不是很熟悉。

表格例如:

public class A {

 private Long id;

 private Long secondId;


 ...
}


public class daughterA {

 @JoinColumn (name = "id")
 private Long idA;

 ...
}

,WHERE将应用于secondId。

谢谢大家的帮助,对于任何不准确之处,我深表歉意,我是从这些技术开始的。

1 个答案:

答案 0 :(得分:0)

首先,您的Join似乎是一对多的Join,因此应按原样进行:

  • 在父类中添加一个注解,该注解由另一个类中其实例的名称进行映射,该注解涵盖子类的对象的Set或List
  • 在子类中添加ManyToOne注释,一个女儿只能有一个母亲,并且idA不是Long,但它引用父类,实际上它是一个外键

    public class A{ 

     @Id
     private Long id;

     private Long secondId;

     @OneToMany(mappedBy="idA")
     private Set<daughterA > daughters;

     ...
    }


    public class daughterA {

     @ManyToOne
     @JoinColumn (name = "id")
     private A idA;

     ...
    }

和where子句:

TypedQuery<Country> query =
  em.createQuery("SELECT d FROM daughterA d WHERE d.idA.secondId = :secondId ", Country.class);
  A results = query.setParameter("secondId",sencondId).getSingleResult();