zoukankan      html  css  js  c++  java
  • Spring data rest 如何显示主键

    How to expose the resourceId with Spring-Data-Rest?

    Spring-Data-Rest is a quite new project in the Spring family of pivotal. The intention of this project is to reduce the boilercode of controllers and services when you need only CRUD methods on an entity for your REST resources. – Quote from project page is “Spring-Data-Rest makes it easy to expose JPA based repositories as RESTful endpoints.”

    One requirement I had was to expose the CRUD identifier and database primary key which is annotated with @Id. In my case that was needed because the field was functional required. For that I had to expose it because at the standard configuration the ID field is only visible on the resource path, but not on the JSON body.

    To expose it you need to configure your RepositoryRestMvcConfiguration like that:

    1
    2
    3
    4
    5
    6
    7
    8
    @Configuration
    public class MyCoolConfiguration extends RepositoryRestMvcConfiguration {
     
        @Override
        protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
            config.exposeIdsFor(FooEntity.class);
        }
    }

    The entity class could look like that:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    @Entity
    public class FooEntity {
     
        @Id
        @GeneratedValue(strategy= GenerationType.AUTO)
        Long id;
     
        String name;
    }

    With this configuration you will receive your entity id back.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    {
      "_links":{
      "self":{
      }
    },
      "id":1,
      "name":"bar"
    }

    Additional Comment from a Spring-Developer: URI stands for unique, resource, *identifier* – The URI *is* the id. What I expose here is a database internals.

    转自:How to expose the resourceId with Spring-Data-Rest?

    另一种:

    package net.huuat.micro.base.schedule;
    
    import net.huuat.micro.base.schedule.domain.TJobConf;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
    import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer;
    import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurerAdapter;
    
    @Configuration
    public class SpringDataRestConfig {
    	@Bean
        public RepositoryRestConfigurer repositoryRestConfigurer() {
    
            return new RepositoryRestConfigurerAdapter() {
                @Override
                public void configureRepositoryRestConfiguration(
                        RepositoryRestConfiguration config) {
                    config.exposeIdsFor(TJobConf.class);
                }
            };
        }
    
    }
    

      

    我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他 们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其 实我是一个程序员
  • 相关阅读:
    从构建分布式秒杀系统聊聊限流特技
    轻快的VIM(三):删除
    shell中各种括号的作用()、(())、[]、[[]]、{}
    java的重写规则
    UNIX命令,统计当前目录(含子目录)下所有后缀为.log的文件中ERROR出现的行数
    linux下使用 du查看某个文件或目录占用磁盘空间的大小
    linux如何查看系统占用磁盘空间最大的文件及让文件按大小排序
    管道命令和xargs的区别(经典解释)
    JAVA 一个或多个空格分割字符串
    shell替换一个或多个空格为逗号
  • 原文地址:https://www.cnblogs.com/kms1989/p/5809187.html
Copyright © 2011-2022 走看看