我试图实现搜索功能网格使用和条件。如果我给两个参数它给的结果。但是如果我想搜索只使用第一个字段,第二个是空的。它根据AND功能给出空数组。在这种情况下如何避免空参数。
如果一个参数为空,那么如何避免该参数,并根据该参数得到结果,而该参数不是空的。
会计控制员
@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);
会计服务
@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;
}
帐户存储库
@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();
}
}
Spring我是新来的。有谁能帮我,我需要在上面的代码中更改什么?
您可以尝试以下方法(但未经测试):
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) ");
我有一个分布式任务队列,其中的任务如下所示: 这里有一个竞争条件:如果任务队列软件在完全相同的时间启动其中两个任务,它们都将从数据库中获得相同的<code>old_path</code>,并且竞争失败者的取消链接调用失败(将失败者的新路径从未来的取消链接中孤立出来)。 有没有办法让我构建它来绕过这场比赛?如果需要,我可以从当前设计中抛出几乎任何东西。具体来说,我使用的是PostgreSQL,Pyt
问题内容: 我有以下内容: 但是,并非总是有一个结果会给我以下错误: NoSuchElementException:没有值 那么,如果没有值,我该如何返回? 问题答案: 您可以使用,它比检查要简单得多:
在一个项目中,我们使用的不是Spring(其中有大量关于test容器的信息),而是一个相当古老的jboss版本6.4.0。带有Hibernate的EAP,我们不能改变它。测试框架是Junit4,在某种程度上是arquillian。 我试图改进集成测试,并希望至少在数据库测试设置中使用testcontainers。我知道如何启动testcontainer(在这种情况下是mysqlcontainer)
问题内容: 我正在开发的应用程序中存在潜在的竞争状况,我想在查询中考虑和避免这种情况。 总结应用程序流程… 在表中创建一个新行: 通过查看对时间敏感的表格,找出Bar先生是否是获胜者: 如果他是赢家,请相应地更新他的条目行: 由于每个奖项只能颁发一次,因此我需要消除比赛条件的任何可能性,在这种情况下,另一个过程可以查询奖项表并更新上述步骤2和3之间的条目表。 我一直在做一些研究,发现了大量关于事务
问题内容: 我设计了一个简单的函数来返回数学函数,该函数可用于拟合实验数据。这些功能看起来很像以下内容: 不幸的是,我在RunTimeWarnings中遇到了麻烦: 由于值太大或太小。但我无法自行解决此问题。有什么办法可以重新定义我的功能,使其在没有警告的情况下通过? 问题答案: 使用以控制在这种情况下做什么numpy的:http://docs.scipy.org/doc/numpy/refere
我听说过很多关于在Excel VBA中使用的憎恶是可以理解的,但我不确定如何避免使用它。我发现,如果我能够使用变量而不是函数,那么我的代码将更加可重用。但是,如果不使用,我不确定如何引用东西(如等)。 我已经找到了这篇关于范围的文章和这个关于不使用select的好处的例子,但是我找不到任何关于如何使用的东西。