【发布时间】:2019-12-02 20:27:40
【问题描述】:
我想通过 REST API 关联双向两个实体。 假设有老师和班级。班级有一个教育者,即老师,老师有他正在教育的班级。
我看到了有关实体关联的其他问题,但对我没有用。 我试过@PreUpdate,@PrePersist 方法,但我得到空指针异常......我也试过发送资源的 URL 关联实体地点。
类(没有其他属性、getter、setter 等)
@Entity
public class Class extends NamedEntity {
@OneToOne(mappedBy = "educatedClass")
private Teacher educator;
}
Teacher(没有其他属性、getter、setter 等)
@Entity
public class Teacher extends User {
@OneToOne
private Class educatedClass;
}
类控制器(没有其他方法等)
@RestController
@RequestMapping(value = "classes")
public class ClassController {
@PatchMapping(value = "/{id}")
@ResponseStatus(HttpStatus.OK)
public Class updateClass(@PathVariable Integer id, @RequestBody Class class_) {
return classService.updateClass(id, class_);
}
}
类服务(没有其他方法、属性等)
@Service
public class ClassServiceImpl implements ClassService{
@Override
public Class updateClass(Integer id, Class class_) {
logger.info(String.format("Update class of ID %d, %s", id, class_));
Class updatedClass = classRepository.findById(id).orElseThrow(() ->
new ResourceNotFoundException("Class not found"));
updatedClass.update(class_);
return classRepository.save(updatedClass);
}
}
类库
@Repository
public interface ClassRepository extends PagingAndSortingRepository<Class, Integer>,
JpaSpecificationExecutor<Class> {
Page<Class> findAllBySubjectsId(Integer id, Pageable pageable);
}
我也有用于老师的控制器、服务、存储库,但看起来与上面的非常相似。
JSON parse error: Cannot construct instance of `blumczynski.com.schoolmanagement.models.Teacher` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('http://localhost:8080/api/users/teachers/14'); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `blumczynski.com.schoolmanagement.models.Teacher`
【问题讨论】:
标签: java spring rest jpa spring-data-jpa