java - 在 Spring boot Rest api 中使用 @embeded 时,在数据库中获取 null 值? java新手帮帮我吧

标签 java spring hibernate spring-boot jpa

在数据库中获取嵌入地址实体的空值。使用MySql数据库。用户实体存储值很好,但嵌入的地址实体返回空值,无法弄清楚为什么它不起作用。帮助我吧伙计们。我是一个初学者,尝试到处搜索但没有运气。只是一个新手 Api,但它不会按照我想要的方式工作,这真的很烦人。

模型类

 package com.example.demo;



import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class User {
@Id
private int id; 
private String name;
@Embedded
private Address address;

public User() {

}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String toString() {
    return "user [id=" + id + ", name=" + name + ",Address="+address+" ]";
}
public User(int id, String name, Address address) {
    this.id = id;
    this.name = name;
    this.address = address;
}
public Address getAddress() {
    return address;
}
public void setAddress(Address address) {
    this.address = address;
}

}

---------------------------------------------------------------------------------------------------------
**Model class**
package com.example.demo;

import javax.persistence.Embeddable;


@Embeddable
public class Address {

    private String cityname;

    private String streetname;

    private String Housename;

    public Address() {

}
public Address(String cityname, String streetname, String housename) {
        super();
        this.cityname = cityname;
        this.streetname = streetname;
        Housename = housename;
    }


public String getStreetname() {
    return streetname;
}
public void setStreetname(String streetname) {
    this.streetname = streetname;
}
public String getHousename() {
    return Housename;
}
public void setHousename(String housename) {
    Housename = housename;
}
public String getCityname() {
    return cityname;
}
public void setCityname(String cityname) {
    this.cityname = cityname;
}
}
---------------------------------------------------------------------------------------------------------

**controller class**

package com.example.demo;

import java.util.List;
import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Croller {

@Autowired
TestRepo repo;

@PostMapping("/add")
public String save(@RequestBody User mode) {
repo.save(mode);
return "details saved";
}

@GetMapping("/get")
public List<User> retrive(){
return repo.findAll();
}

@GetMapping("/search")
public List<User> searchname(@RequestParam("name")String name){
    return  repo.name(name);    
}
@GetMapping("/byid/{id}")
public Optional <User> getone (@PathVariable int id){

    return repo.findById(id);
}

@PutMapping("/update")
public String updateid(@RequestBody User mode ) {
 repo.save(mode);
return " user updated sucessfully";
}

@DeleteMapping("/remove/{id}")
public String delete(@PathVariable int id) {
repo.deleteById(id);
return "deleted with the given id:"+ id;
}
}
---------------------------------------------------------------------------------------------------------
Repository 

package com.example.demo;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;

public interface TestRepo extends JpaRepository <User, Integer> {
 List <User> name(String name);



}


**Application.java**

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Demoapi2Application {

    public static void main(String[] args) {
        SpringApplication.run(Demoapi2Application.class, args);
    }
}

最佳答案

您的请求必须与 @RequestBody 对象匹配,以便 spring 正确映射键

尝试这个请求 -

{
   "id":19,
   "name":"Alex",
   "address":{
      "cityname":"california",
      "streetname":"ring road",
      "Housename":"Housename"
   }
}

关于java - 在 Spring boot Rest api 中使用 @embeded 时,在数据库中获取 null 值? java新手帮帮我吧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61977519/

相关文章:

java - 无需 Hibernate 映射即可获取类数据

java - 无法执行目标 org.springframework.boot :spring-boot-maven-plugin:1. 3.3.RELEASE:run

java - 用于远程启动服务的 CMD 命令不在代码中运行,而是在 CMD 上运行

Java Swing 幽灵/双重组件?

java - 如何按间隔对结果进行分组?

java - Spring JDBC 不使用 log4j 记录 SQL

spring - Websockets + Spring Boot + Kubernetes

java - 如何访问本地机器的temp目录

java - 启动一个又一个的Runnable

spring - 在 IntelliJ 14 上运行 spring mvc Web 应用程序时出现 Tomcat 错误