Java 包装类spring的int字段排序
我有一个导航类,我在其中动态创建导航,我有两个表文件夹(它是包含文件的目录)和内容(类似于将在公共站点上呈现内容的文件或页面)。我创建了一个导航类,其中有一个包装器类,用于将内容字段合并到文件夹中。我尝试过使用@OrderBy和@OrderColumn,但我知道它只适用于集合Java 包装类spring的int字段排序,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我有一个导航类,我在其中动态创建导航,我有两个表文件夹(它是包含文件的目录)和内容(类似于将在公共站点上呈现内容的文件或页面)。我创建了一个导航类,其中有一个包装器类,用于将内容字段合并到文件夹中。我尝试过使用@OrderBy和@OrderColumn,但我知道它只适用于集合 List folder=folderRepository.findAllByNavDepthLessThanOrderByNavDepthAsc(3) 在这里,我使用navDepth对其进行排序(此列属于文件夹实体),我还
List folder=folderRepository.findAllByNavDepthLessThanOrderByNavDepthAsc(3)代码>
在这里,我使用navDepth对其进行排序(此列属于文件夹实体),我还希望使用navOrder对其进行排序(此列属于内容实体)
@服务
公共类导航服务{
@限定符(“jdbcMySQL”)
私有JdbcTemplate JdbcTemplate;
私有FolderRepository FolderRepository;
私人FolderService FolderService;
@自动连线
公共导航服务(JdbcTemplate JdbcTemplate,
FolderRepository FolderRepository,
FolderService(文件夹服务){
this.jdbcTemplate=jdbcTemplate;
this.folderRepository=folderRepository;
this.folderService=folderService;
}
@事务性(传播=propagation.REQUIRED,只读=false)
公共地图导航项(){
//TODO://横切AOP弹簧
//待办事项:http://docs.spring.io/spring/docs/4.2.0.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/#aop
List folder=folderRepository.findAllByNavDepthLessThanOrderByNavDepthAsc(3);
//List folder=folderService.navigation();
Map navItems=new LinkedHashMap();
对于(int i=0;i
使用比较器
并将其传递给Collections.sort()
或类似方法
比较器可能如下所示:
class NavComparator implements Comparator<NavigationItem> {
int specialValueNoChildren = -1; //assuming nav_order is always 0 or greater
int compare(NavigationItem o1, NavigationItem o2) {
int max1 = getMaxNavOrder( o1 );
int max2 = getMaxNavOrder( o2 );
return Integer.compare( max1, max2 );
}
int getMaxNavOrder( NavigationItem ni ) {
int max = specialValueNoChildren;
for( Content child : ni.getChildren() ) {
max = Math.max(max, child.getNavOrder());
}
return max;
}
}
类NavComparator实现Comparator{
int specialValueNoChildren=-1;//假设nav_顺序始终为0或更大
int比较(NavigationItem o1,NavigationItem o2){
int max1=getMaxNavOrder(o1);
int max2=getMaxNav
class NavComparator implements Comparator<NavigationItem> {
int specialValueNoChildren = -1; //assuming nav_order is always 0 or greater
int compare(NavigationItem o1, NavigationItem o2) {
int max1 = getMaxNavOrder( o1 );
int max2 = getMaxNavOrder( o2 );
return Integer.compare( max1, max2 );
}
int getMaxNavOrder( NavigationItem ni ) {
int max = specialValueNoChildren;
for( Content child : ni.getChildren() ) {
max = Math.max(max, child.getNavOrder());
}
return max;
}
}