无法使用Spring Data JPA持续存在子类记录



问题

1(我创建了一个扩大个人的班级员工。我可以坚持雇员记录而不是人。

解决方案我实施

1(创建了模式类员工和人员。

模态类

员工

@Entity
@Table(name = "employee",
    indexes = {@Index(name = "username", columnList = "username", unique = true)})
public class BaseEmployee extends Person {
public static final String OBJECT_KEY = "EMPLOYEE";
@Id
@GeneratedValue
private Long id;
// Who created this baseEmployee
private String userId;
//    @Indexed(unique = true)
private String username;
@Enumerated(EnumType.STRING)
private ROLE role;
@Enumerated(EnumType.STRING)
private STATUS status;
private String designation;

public class Person extends AbstractEntity {
private String firstName;
private String lastName;
private String contact;
private String email;
@Enumerated(EnumType.STRING)
private GENDER gender;
private String imageId;
private String address;
private String locationId;
private DateTime dob;
private double[] location;
private String pinCode;

员工控制器

@PostMapping
ApiResponse<BaseEmployee> post(@RequestBody CreateEntry<BaseEmployee> baseEmployeeCreateEntry) {
    BaseEmployee baseEmployeeToCreate = baseEmployeeCreateEntry.getEntry();
    baseEmployeeToCreate.setStatus(STATUS.ACTIVE);
    baseEmployeeToCreate = employeeService.post(baseEmployeeToCreate);
    if (baseEmployeeToCreate != null)
        authenticationService.setPassword(baseEmployeeToCreate, baseEmployeeCreateEntry.getPassword());
    return ApiResponse.success().message("Created Successfully!").object(baseEmployeeToCreate);
}
public class CreateEntry<T> {
private T entry;
private String password;

服务

@Override
public <E extends BaseEmployee> E post(E employee) {
    employee = employeeRepository.save(employee);
    System.out.println(employee);
    LOG.info("Admin data" + employee);
    LOG.info("PUT employee {} {} {}", employee.getId(), employee.getFirstName(), employee.getEmail());
    return employee;
}

存储库

public interface EmployeeRepository extends JpaRepository<BaseEmployee, Long> {}
#Expected Output
 The Employee class Columns and Person class Columns
#Output Shown
mysql> select * from employee;
 id | created_at    | created_by    | last_modified_at | last_modified_by | version | designation | role  | status | user_id | username |
  1 | 1519624346694 | anonymousUser |    1519624346694 | anonymousUser    |       0 | csdcs       | ADMIN | ACTIVE | string  | admin    |
  3 | 1519624856504 | anonymousUser |    1519624856504 | anonymousUser    |       0 | csdcs       | ADMIN | ACTIVE | string  | admin1   |
  4 | 1519626598478 | anonymousUser |    1519626598478 | anonymousUser    |       0 | csdcs       | ADMIN | ACTIVE | string  | admin2   |

有人可以指导我我在做什么错。

您可以尝试将@mappedsuperclass添加到个人实体吗?

最新更新