複合キーを持つデータベースを使用する webapp があります。各パラメーターが null になる複合キーのパラメーターを受け入れる API を作成する必要があります。(たとえば、複合キーのすべてのパラメーターが null として設定され、クエリが実行された場合、db のすべての行を返す必要があります) QueryByExampleExeccutor を使用しましたが、null ポインター例外をスローし続けます。
以下は、DBの1行を示すモデルです
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> {
}
私のサービスレイヤーでは、次のステートメントを使用してレポメソッドを呼び出し、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;
}
展開すると、rowSection でヌル ポインター例外が明らかになる InvocationTargetException を取得します。