CriteriaBuilder
public class Test {
@Autowired
private ReceiptSourceRepository receiptSourceRepository;
public void test() {
Specification<ReceiptSource> spec= (Root<ReceiptSource> root, CriteriaQuery<?> query, CriteriaBuilder cb) -> {
Predicate predicate = cb.conjunction();
predicate = cb.and(predicate,cb.isNull(root.get("accountsEntity")));
predicate = cb.and(predicate,cb.isEmpty(root.get("receiptsCostList")));
query.where(predicate);
return query.getRestriction();
};
List<ReceiptSource> receiptSourceList = receiptSourceRepository.findAll(spec);
}
}
package com.allqj.finance.business.receipts.repository;
import com.allqj.finance.business.receipts.entity.ReceiptSource;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
@Repository
public interface ReceiptSourceRepository extends JpaRepository<ReceiptSource,String>, JpaSpecificationExecutor<ReceiptSource> {
}
package com.allqj.finance.business.receipts.entity;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.hibernate.annotations.*;
import javax.persistence.*;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Getter
@Setter
@Entity
@Table(name = "f_common_bussiness_receipt_source")
public class ReceiptSource implements Serializable {
@Id
@GenericGenerator(name = "guid", strategy = "guid")
@GeneratedValue(generator = "guid")
private String receiptSourceId;
@ManyToOne
@JoinColumn(name = "accountsId", referencedColumnName = "accountsId", updatable = false, insertable = false)
private AccountsListEntity accountsEntity;
@OneToMany(mappedBy = "receiptSource")
private List<ReceiptsCost> receiptsCostList;
public ReceiptSource() {
}
}