我正在尝试使用和条件在网格上实现搜索功能。如果给出两个参数,则其给出结果。但是,如果我只想仅使用第一个字段搜索,而第二个字段为空。它根据和功能给出空数组。在这种情况下如何避免零参数。
如果一个参数为null,则如何避免该参数并根据该参数而不是null。
获得结果。accountController
@RestController
@RequestMapping("/SpaceStudy/SpaceAdmin")
public class AccountController {
@Autowired
AccountService accService;
@CrossOrigin(origins = "*")
@GetMapping("/AccountMaintenance/LoadGrid")
public Set<AccountModel> GridLoad( String sclientacctid, String sacctdesc) {
return accService.gridLoad("1124100",null);
Accountervice
@Service
public class AccountService {
@Autowired
AccountRepository accRepo;
public Set<AccountModel> gridLoad( String sclientacctid,String sacctdesc) {
if (sclientacctid != null || sacctdesc != null) {
Set<AccountModel> gridObj1 = accRepo.findBySclientacctidAndSacctdesc(sclientacctid, sacctdesc);
return gridObj1;
}
Set<AccountModel> gridObj = accRepo.findBySclientacctid();
return gridObj;
}
accountrepository
@Repository
public interface AccountRepository extends JpaRepository<AccountModel, Integer>,AccontRepositoryCustom {
@Query("select distinct(a.slocation) from AccountModel a where a.slocation !=null")
List<AccountModel> findBySlocation();
@Query("select new map(acct.sclientacctid as sclientacctid ,acct.sacctdesc as sacctdesc ,"
+ "acct.slocation as slocation,invest.sinvestigatorname as sinvestigatorname ,"
+ "dept.sclientdeptid as sclientdeptid,dept.sdeptname as sdeptname ,acp.sccpcode as sccpcode)"
+ " from AccountModel acct join acct.department dept"
+ " join acct.investigator invest join acct.accountCPC acp" + " where acct.ninstid= 60")
Set<AccountModel> findBySclientacctid();
accountrepositorycustomimpl
@Repository
public class AccountRepositoryCustomImpl implements AccontRepositoryCustom {
@PersistenceContext
EntityManager entityManager;
@SuppressWarnings("unchecked")
@Override
public Set<AccountModel> findBySclientacctidAndSacctdesc(String sclientacctid, String sacctdesc) {
Query query = entityManager
.createQuery("select new map(acct.sclientacctid as sclientacctid ,acct.sacctdesc as sacctdesc ,"
+ "acct.slocation as slocation,invest.sinvestigatorname as sinvestigatorname ,"
+ "dept.sclientdeptid as sclientdeptid,dept.sdeptname as sdeptname ,acp.sccpcode as sccpcode)"
+ " from AccountModel acct join acct.department dept"
+ " join acct.investigator invest join acct.accountCPC acp"
+ " where acct.sclientacctid=?1 and acct.acctdesc=?2 ");
query.setParameter(1, sclientacctid);
query.setParameter(2, sacctdesc);
return (Set<AccountModel>) query.getResultList();
}
}
我在春天是新来的。有人可以帮助我,我需要在上述代码中更改吗?
您可能会尝试以下类似(虽然未测试(:
Query query = entityManager
.createQuery("select new map(acct.sclientacctid as sclientacctid ,acct.sacctdesc as sacctdesc ,"
+ "acct.slocation as slocation,invest.sinvestigatorname as sinvestigatorname ,"
+ "dept.sclientdeptid as sclientdeptid,dept.sdeptname as sdeptname ,acp.sccpcode as sccpcode)"
+ " from AccountModel acct join acct.department dept"
+ " join acct.investigator invest join acct.accountCPC acp"
+ " where acct.sclientacctid=?1 and (?2 is null or acct.acctdesc =?2) ");