我有一个使用带有复合键的数据库的 web 应用程序。我需要创建一个 API,它将接受复合键的参数,其中每个参数都可以为空。(例如,如果复合键的所有参数都设置为 null 并且查询已完成,那么它应该只返回 db 中的所有行)我使用了 QueryByExampleExeccutor 但它一直抛出空指针异常。
下面是表示 1 行 DB 的模型
public class Row
{
@EmbeddedId
private RowKey rowkey;
@Column
private String rowAttribute;
//getters and setters for rowkey and rowAttribute
}
下面是表示 RowKey 的模型
public class RowKey
{
@Column(name = "rowBlock")
private String rowBlock;
@Column(name = "rowSection")
private String rowSection;
//getters and setters for above fields
}
我通过扩展我的存储库(或 DAO)来使用 QueryByExampleExecutor
public interface RowRepo extends CrudRepository<Row, RowKey>, QueryByExampleExecutor<Row> {
}
在我的服务层中,我使用以下语句调用 repo 方法以从 DB 返回匹配行的列表
public List<Row> getRowRangeQuery(rowBlock,rowSection,rowAttribute)
{
Row row = new Row(new RowKey(rowBlock,rowSection),rowAttribute);
List<Row> Result = (List<Row>)getRowRepository().findAll(Example.of(row));
return Result;
}
我得到一个 InvocationTargetException,它在展开时会在 rowSection 处显示一个空指针异常。