spring-mvc - 非空对象变为空json

标签 spring-mvc spring-boot

我正在尝试使用 spring boot 编写 web 应用程序,但发现从 Controller 方法返回的对象变为空 json,她的是我的代码:

应用程序.java

@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableWebMvc
public class Application {
    @Bean
    public DataSource ds() {
        BasicDataSource ds = new org.apache.commons.dbcp.BasicDataSource();
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setUrl("jdbc:mysql://localhost:3306/test");
        ds.setUsername("root");
        ds.setPassword("test");
        return ds;
    }

    @Bean
    public AbstractEntityManagerFactoryBean entityManagerFactory(DataSource dataSource, JpaVendorAdapter jpaVendorAdapter) {
        LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean();
        lef.setDataSource(ds());
        lef.setJpaVendorAdapter(jpaVendorAdapter);
        lef.setPackagesToScan("hello");
        return lef;
    }

    @Bean
    public JpaVendorAdapter jpaVendorAdapter() {
        HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();
        hibernateJpaVendorAdapter.setShowSql(true);
        hibernateJpaVendorAdapter.setGenerateDdl(true);
        hibernateJpaVendorAdapter.setDatabase(Database.MYSQL);
        return hibernateJpaVendorAdapter;
    }

    @Bean
    public PlatformTransactionManager transactionManager() {
        return new JpaTransactionManager();
    }


    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(Application.class);
        CustomerRepository repository = context.getBean(CustomerRepository.class);
    }

}

Customer.java

@Entity
@Table(name ="customer")
public class Customer {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long id;
    private String firstName;
    private String lastName;

    protected Customer() {}

    public Customer(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    @Override
    public String toString() {
        return String.format(
                "Customer[id=%d, firstName='%s', lastName='%s']",
                id, firstName, lastName);
    }

}

MyController.java

@Controller
@RequestMapping("/customer")
public class MyController {

    @Autowired
    CustomerRepository customerRepository;

    @RequestMapping(method = RequestMethod.GET)
    public @ResponseBody List<Customer> getAll() {
        return (List<Customer>) customerRepository.findAll();
    }

    @RequestMapping(value="/{id}", method = RequestMethod.GET)
    public @ResponseBody Customer findOne(@PathVariable long id) {
        Customer customer = customerRepository.findOne(id);
        System.out.println("--------------------------------");
        System.out.println(customer);
        return customer;
    }
}

我可以在控制台中看到客户打印,所以我猜数据访问正常,唯一的问题是为什么客户对象被转换为空 json。

enter image description here

最佳答案

你不需要一些公共(public) setter/getter 吗?

关于spring-mvc - 非空对象变为空json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24050804/

相关文章:

java - java中的同步请求响应

Spring XD -- xd-singlenode启动失败

spring - Spring-fu-Kofu:无法连线 `NamedParameterJdbcTemplate`

java - 如何在 Spring Boot 集成测试中读取生成的属性文件?

java - 如何使用 mockito 为 Controller 类编写单元测试用例

maven - 默认情况下,Spring Boot 期望 View 存储在哪里?

java - Spring 4 - addResourceHandlers 不解析静态资源

docker - 无法使用 spotify 插件构建 Docker 镜像

java - MultipartFile 不在 "@RequestParam Map<String, Object> requestParams"变量中

java - 从组件调用的 Autowiring 服务在使用 new 关键字调用时给出空指针