我正在使用单表继承策略。我想通过使用鉴别符类型对其进行过滤来在数据库中执行搜索。我该如何在JPA中编写函数来执行此操作。
使用Console.WriteLine(testobject.initialTwin.tags.abcd);
方法定义方法的常规方法不会产生结果。
这是我的父母班
findBy...
这是两个子实体
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
name="Leave_Type",
discriminatorType=DiscriminatorType.STRING
)
public class LeaveQuota {
// the fields and the required methods
}
我想通过分别过滤年假和临时假来查询数据库。这意味着当我搜索年假时,应检索区分值列中所有值为“ annual”的记录。我该如何实施。 预先感谢!
答案 0 :(得分:1)
为AnnualLeave.java创建存储库,即AnnualLeaveRepo.java和CausualLeave.java,如下所示:
AnnualLeaveRepo.java
@Repository
public interface AnnualLeaveRepo extends JpaRepository<AnnualLeave,Integer> {
@Query("from AnnualLeave")
public List<AnnualLeave> getLeaves();
//consider noOfLeave is member of AnnualLeave.java class
public List<AnnualLeave> findByNoOfLeave(int noOfLeave);
}
CausalLeaveRepo.java
@Repository
public interface CausalLeaveRepo extends JpaRepository<CausalLeave,Integer> {
@Query("from CausalLeave")
public List<CausalLeave> getLeaves();
}
现在,当您使用 findAll()或 getLeaves()或 findByNoOfLeave(int)方法或任何其他自定义抽象方法时类的,它将自动使用 Leave_Type =“ Annual” 过滤结果。
类似,当您使用 CausalLeaveRepo 的 findAll()或 getLeaves()方法或任何其他自定义抽象方法时, strong>类,它将使用 Leave_Type =“ Causal” 自动过滤结果。
您不必显式过滤掉。
注释 如果您的类中具有与LeaveQuota实体或其继承实体具有关系(@OneToMany等。)的任何属性,则不要忘记在这些属性上使用@JsonIgnore批注。否则,您将得到一个stackoverflow错误