mysql - 如何使用jpa在mysql中存储java对象?

标签 mysql json spring-boot jpa

我已经使用 GSON 将 JSON 转换为 POJO。 我希望使用 JPA 的 save() 方法将 Employee 实体对象存储到 mysql 中。但是我收到一条错误消息“无法确定地址的类型”。那么我该如何处理呢?

这里是错误: 无法确定类型:地址

员工.java

package com.example.demo;

import java.math.BigDecimal;
import java.util.Map;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;

import com.google.gson.annotations.Expose;

@Entity
public class Employee {

@Id
private int id;
private String name;
private int age;
private BigDecimal salary;
private String designation;
private Address address;
private long[] phoneNumbers;

/*Getter and Setter Methods*/
public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

public BigDecimal getSalary() {
    return salary;
}

public void setSalary(BigDecimal salary) {
    this.salary = salary;
}

public String getDesignation() {
    return designation;
}

public void setDesignation(String designation) {
    this.designation = designation;
}


public long[] getPhoneNumbers() {
    return phoneNumbers;
}

public void setPhoneNumbers(long[] phoneNumbers) {
    this.phoneNumbers = phoneNumbers;
}

public Address getAddress() {
    return address;
}

public void setAddress(Address address) {
    this.address = address;
}


}

地址.java

package com.example.demo;

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

//@Entity
public class Address {
@Id
private String street;
private String city;
private int zipCode;
public String getStreet() {
    return street;
}
public void setStreet(String street) {
    this.street = street;
}
public String getCity() {
    return city;
}
public void setCity(String city) {
    this.city = city;
}
public int getZipCode() {
    return zipCode;
}
public void setZipcode(int zipcode) {
    this.zipCode = zipcode;
}
@Override
public String toString(){
    return getStreet() + ", "+getCity()+", "+getZipCode();
}
}

Controller 类

package com.example.demo;

import net.sf.json.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;

import net.sf.json.JSONObject;

@Controller    // This means that this class is a Controller
@RequestMapping(path="/demo") // This means URL's start with /demo 
(after Application path)
public class MainController {
@Autowired // This means to get the bean called userRepository
           // Which is auto-generated by Spring, we will use it 
to handle the data
private UserRepository userRepository;

@GetMapping(path="/add") // Map ONLY GET Requests
public @ResponseBody String addNewUser (@RequestBody String json) { 
    // @ResponseBody means the returned String is the response, not a view name
    // @RequestParam means it is a parameter from the GET or POST request


    //JSONObject jsonObject = JSONObject.fromObject(json);
    Gson gson=new GsonBuilder().create();
    Employee employee =gson.fromJson(json,Employee.class);
    userRepository.save(employee);
    return "Successfully added to database using JPA!";
    }

@GetMapping(path="/all")
public @ResponseBody Iterable<Employee> getAllUsers() {
    // This returns a JSON or XML with the users
    return userRepository.findAll();
}
}

最佳答案

尝试为您的实体类添加implements Serializable。 即。

@Entity
public class Employee implements Serializable{
}

关于mysql - 如何使用jpa在mysql中存储java对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56624141/

相关文章:

java - 如何使用 @DynamoDbTable 注释动态传递 aws dynamodb 表名称

java - 使用@DataJpaTest 时未配置 JdbcTemplate

mysql - 求和时间戳返回不正确的值和格式

javascript - 即使值确实存在,Jquery 也不附加值

mysql - 无法使用 go 和 docker 连接到 mysql 服务器 - 调用 tcp 127.0.0.1 :3306: connect: connection refused

c# - 如何动态检查数组中的索引是否存在?

arrays - 从 JSON 解析数组内的字典获取数据

java - 将默认容器工厂 bean 从 kafkaListenerContainerFactory 更改为我的自定义容器工厂

mysql - MYSQL查询缓存中是否可能有 "moving window"?

mysql - mysql上的逆递归树形菜单