static RowReducer<?, ?> rowReducerFor(UseRowReducer annotation) { Class<? extends RowReducer<?, ?>> reducerClass = annotation.value(); try { return reducerClass.getConstructor().newInstance(); } catch (Exception e) { throw new UnableToCreateStatementException("Could not create reducer " + reducerClass.getName(), e, null); } }
@SqlQuery("select f.id f_id, f.name f_name, " + "d.id d_id, d.name d_name, d.contents d_contents " + "from folders f left join documents d " + "on f.id = d.folder_id " + "where f.id = :folderId") @RegisterBeanMapper(value = Folder.class, prefix = "f") @RegisterBeanMapper(value = Document.class, prefix = "d") @UseRowReducer(FolderDocReducer.class) Optional<Folder> getFolder(int folderId);
@SqlQuery("select " + "f.id f_id, f.name f_name, " + "d.id d_id, d.name d_name, d.contents d_contents " + "from folders f left join documents d " + "on f.id = d.folder_id " + "order by f.name, d.name") @RegisterBeanMapper(value = Folder.class, prefix = "f") @RegisterBeanMapper(value = Document.class, prefix = "d") @UseRowReducer(FolderDocReducer.class) List<Folder> listFolders();
@SqlQuery("select f.id f_id, f.name f_name, " + "d.id d_id, d.name d_name, d.contents d_contents " + "from folders f left join documents d " + "on f.id = d.folder_id " + "where f.id = :folderId") @RegisterBeanMapper(value = Folder.class, prefix = "f") @RegisterBeanMapper(value = Document.class, prefix = "d") @UseRowReducer(FolderDocReducer.class) Optional<Folder> getFolder(int folderId);
@SqlQuery("select " + "f.id f_id, f.name f_name, " + "d.id d_id, d.name d_name, d.contents d_contents " + "from folders f left join documents d " + "on f.id = d.folder_id " + "order by f.name, d.name") @RegisterBeanMapper(value = Folder.class, prefix = "f") @RegisterBeanMapper(value = Document.class, prefix = "d") @UseRowReducer(FolderDocReducer.class) List<Folder> listFolders();