java对象关系Map

hmmo2u0o  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(371)

我有一个 Employee 使用以下数据成员初始化:

@Id
private int empId;
private String empName;
private String department;
private String baseLocation;
@OneToOne
@JoinColumn(name="address_id")
private Address address;

和一个 Address 班级:

@Id
private int address_id;
private String city;
private String pincode;

当我储存 Employee 对象放入数据库中 Address 对象存储为 null ,即使 Address 对象作为参数传递。
我正在使用jparepository和springboot。我的方法如下

@Autowired
EmployeeServiceImpl empService;

public static void main(String[] args) {
    SpringApplication.run(EmployeeManagementApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
    Address address = new Address(5,"pun","591237");
    Employee emp = new Employee(11, "Abc", "cse", "pune", address);
    System.out.println("ghii");

    try {
        service.insertAddress(address);
        empService.AddEmployee(emp);
        //invoke service layer method to insert Customer
        System.out.println("Records are successfully added..");

          System.out.println("reading"); 
          Employee emploee = empService.getEmployee(11);
          System.out.println(emploee.getDepartment());

    }
    catch(Exception e) {
        System.out.println("in exception");
        e.printStackTrace();
    }

请帮我把这些对象存入数据库。

kdfy810k

kdfy810k1#

尝试

@OneToOne(cascade = {CascadeType.ALL})

更多关于级联的信息:这里
upd:详细类(使用lombok表示实体):

@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Employee {
    @Id
    private int empId;
    private String empName;
    private String department;
    private String baseLocation;
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="address_id")
    private Address address;
}

@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Address {
    @Id
    private int address_id;
    private String city;
    private String pincode;
}

public interface EmployeeRepository extends JpaRepository<Employee, Integer> {
}

@SpringBootApplication
@ConfigurationPropertiesScan
public class Application implements CommandLineRunner {

    @Autowired
    private EmployeeRepository employeeRepository;

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

    @Override
    public void run(String... args) throws Exception {
        Address address = new Address(5, "pun", "591237");
        Employee emp = new Employee(11, "Abc", "cse", "pune", address);

        try {
            System.out.println("Start");
            employeeRepository.save(emp);
            System.out.println("Records are successfully added..");

            System.out.println("reading");
            Employee emploee = employeeRepository.findById(11).orElse(null);
            System.out.println(emploee.getDepartment());
            System.out.println(emploee.getAddress().getCity());

        } catch (Exception e) {
            System.out.println("in exception");
            e.printStackTrace();
        }
    }
}

输出:

Start
Hibernate: select employee0_.emp_id as emp_id1_2_1_, employee0_.address_id as address_5_2_1_, employee0_.base_location as base_loc2_2_1_, employee0_.department as departme3_2_1_, employee0_.emp_name as emp_name4_2_1_, address1_.address_id as address_1_1_0_, address1_.city as city2_1_0_, address1_.pincode as pincode3_1_0_ from employee employee0_ left outer join address address1_ on employee0_.address_id=address1_.address_id where employee0_.emp_id=?
Hibernate: select address0_.address_id as address_1_1_0_, address0_.city as city2_1_0_, address0_.pincode as pincode3_1_0_ from address address0_ where address0_.address_id=?
Hibernate: insert into address (city, pincode, address_id) values (?, ?, ?)
Hibernate: insert into employee (address_id, base_location, department, emp_name, emp_id) values (?, ?, ?, ?, ?)
Records are successfully added..
reading
Hibernate: select employee0_.emp_id as emp_id1_2_0_, employee0_.address_id as address_5_2_0_, employee0_.base_location as base_loc2_2_0_, employee0_.department as departme3_2_0_, employee0_.emp_name as emp_name4_2_0_, address1_.address_id as address_1_1_1_, address1_.city as city2_1_1_, address1_.pincode as pincode3_1_1_ from employee employee0_ left outer join address address1_ on employee0_.address_id=address1_.address_id where employee0_.emp_id=?
cse
pun

相关问题