Mysql 将JPA标准生成器与联接表一起使用,可以';你得不到价值观?
请帮助我,我正在使用JpaSpecificationExecutor,我需要在我的服务中添加一个关于getStatus()函数的条件,但是getStatus()是由中介计算的。。。 所以我的问题是如何通过getStatus()函数添加规范,或者如何在规范函数中获得中介体Mysql 将JPA标准生成器与联接表一起使用,可以';你得不到价值观?,mysql,spring-boot,spring-data-jpa,Mysql,Spring Boot,Spring Data Jpa,请帮助我,我正在使用JpaSpecificationExecutor,我需要在我的服务中添加一个关于getStatus()函数的条件,但是getStatus()是由中介计算的。。。 所以我的问题是如何通过getStatus()函数添加规范,或者如何在规范函数中获得中介体 public class Transaction extends AbstractEntity { //other code @OneToMany(mappedBy = "transaction&q
public class Transaction extends AbstractEntity {
//other code
@OneToMany(mappedBy = "transaction")
@JsonIgnore
private List<Intermediary> intermediaries;
public String getStatus() {
if (id == null) return null;
if (isEnabled.equals(0)) {
return TransactionStatuses.CLOSED.toString();
} else if (intermediaries != null && intermediaries.stream().anyMatch(intermediary -> intermediary.getArrangementID() != null)) {
return TransactionStatuses.FILED.toString();
} else if (intermediaries != null && intermediaries.stream().anyMatch(intermediary -> intermediary.getIsReportable() != null && intermediary.getIsReportable())) {
return TransactionStatuses.TO_BE_FILED.toString();
} else {
return TransactionStatuses.OPEN.toString();
}
}
}
// Intermediary Entity
public class Intermediary extends AbstractEntity {
// ...
@ManyToOne(optional = false)
private Transaction transaction;
}
// my service
@Override
public Page<IntermediaryDtoV2> getMylogic Map<String, String> allRequestParams) {
Page<Intermediary> transactionPage = intermediaryRepository.findAll(Specification.where(
// here I need to check getStatus() logic
.and(TransactionListSpec.findBySearchValue(allRequestParams.get("searchOption"), allRequestParams.get("searchValue"))), pageRequest);
}
// My repository
public interface IntermediaryRepository extends JpaRepository<Intermediary, Long> , JpaSpecificationExecutor<Intermediary> {
// my queries here
}
公共类事务扩展了抽象实体{
//其他代码
@OneToMany(mappedBy=“交易”)
@杰索尼奥雷
私人名单中介人;
公共字符串getStatus(){
如果(id==null)返回null;
如果(isEnabled.equals(0)){
返回TransactionStatus.CLOSED.toString();
}else if(intermediates!=null&&intermediates.stream().anyMatch(intermediate->intermediate.getArrangementID()!=null)){
return transactionstatus.field.toString();
}else if(intermediates!=null&&intermediates.stream().anyMatch(intermediate->intermediate.getIsReportable()!=null&&intermediate.getIsReportable()){
return transactionstatus.TO_BE_FILED.toString();
}否则{
返回TransactionStatus.OPEN.toString();
}
}
}
//中介实体
公共类中介扩展了抽象实体{
// ...
@多通(可选=假)
私人交易;
}
//我的服务
@凌驾
公共页getMylogic映射(所有请求参数){
Page transactionPage=intermediaryRepository.findAll(Specification.where(
//这里我需要检查getStatus()逻辑
和(TransactionListSpec.findBySearchValue(allRequestParams.get(“searchOption”)、allRequestParams.get(“searchValue”))、pageRequest);
}
//我的存储库
公共接口中介存储库扩展了JpaRepository,JpaSpecificationExecutor{
//我的问题在这里
}
我做了类似的事情,但不起作用
// doesn't work
public static Specification<Intermediary> _findByTransactionStatus(String status) {
return (root, query, cb) -> {
if (status == null) {
return cb.conjunction();
}
Join<Intermediary, Transaction> transaction = root.join("transaction");
return cb.equal(transaction.get("getStatus()"), "tr 111");
};
}
// this work
public static Specification<Intermediary> findByIsEnabled(Integer isEnabled){
return (root, query, cb) -> {
if (isEnabled == null) {
return cb.conjunction();
}
return cb.equal(root.<Integer>get("isEnabled"), isEnabled);
};
}
```
//不起作用
公共静态规范_findByTransactionStatus(字符串状态){
返回(根、查询、cb)->{
如果(状态==null){
返回cb.conjunction();
}
Join transaction=root.Join(“事务”);
返回cb.equal(transaction.get(“getStatus()”),“tr 111”);
};
}
//这项工作
公共静态规范findByIsEnabled(整数isEnabled){
返回(根、查询、cb)->{
如果(isEnabled==null){
返回cb.conjunction();
}
返回cb.equal(root.get(“isEnabled”),isEnabled);
};
}
```