Error JSON.parse
Люди добрые, помогите. Пытаюсь заняться склейкой Angular и Spring. При добавлении джойнов перестали работать некоторые вещи и в браузере получаю такую ошибку:
error: SyntaxError: Unexpected token } in JSON at position 117599 at
JSON.parse (<anonymous>) at XMLHttpRequest.onLoad
(http://localhost:4200/vendor.js:68453:51) at ZoneDelegate.invokeTask
(http://localhost:4200/polyfills.js:3396:35) at Object.onInvokeTask
(http://localhost:4200/vendor.js:45212:33) at ZoneDelegate.invokeTask
(http://localhost:4200/polyfills.js:3395:40) at Zone.runTask
(http://localhost:4200/polyfills.js:3164:51) at ZoneTask.invokeTask [as
invoke] (http://localhost:4200/polyfills.js:3477:38) at invokeTask
(http://localhost:4200/polyfills.js:4618:18) at
XMLHttpRequest.globalZoneAwareCallback
(http://localhost:4200/polyfills.js:4655:25)
message: "Unexpected token } in JSON at position 117599"
Проблемы появились после добавления классов в backend. Объясните пожалуйста, где эту ошибку искать то? Я в ангуляре не ориентируюсь ещё, нужно поконкретнее, если можно. Спасибо.
Employee модель
@Entity
@Table(name = "employees")
public class Employee implements java.io.Serializable {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "firstname", unique = true)
private String firstName;
@Column(name = "lastname")
private String lastName;
@Column(name = "email")
private String emailId;
@Column(name = "positionId")
private long positionId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "positionId", insertable = false, updatable = false)
@Fetch(FetchMode.JOIN)
private EmployeePosition employeePosition;
Position модель
@Entity
@Table(name = "employeePositions")
public class EmployeePosition implements java.io.Serializable{
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "position")
private String position;
@OneToMany(targetEntity = Employee.class,
mappedBy = "positionId",
orphanRemoval = false,
fetch = FetchType.LAZY)
private Set<Employee> employees;
Квери контроллер
@RestController
public class JoinQueryController {
private final JoinQueryService joinQueryService;
public JoinQueryController(JoinQueryService joinQueryService) {
this.joinQueryService = joinQueryService;
}
@GetMapping("/dept/employees/left")
public ResponseEntity<List<EmployeeAndPositionDto>>
getEmployeAndPositionLeftJoin(){
return new ResponseEntity<List<EmployeeAndPositionDto>>
(joinQueryService.getEmployeAndPositionLeftJoin(),
HttpStatus.OK);
}
@GetMapping("/dept/employees/right")
public ResponseEntity<List<EmployeeAndPositionDto>>
getEmployeAndPositionRightJoin(){
return new ResponseEntity<List<EmployeeAndPositionDto>>
(joinQueryService.getEmployeAndPositionRightJoin(),
HttpStatus.OK);
}
}
Репозиторий
@Repository
public interface EmployeePositionRepository extends
JpaRepository<EmployeePosition, Long> {
@Query(value = "SELECT new
backend.dto.EmployeeAndPositionDto(d.position, e.firstName, e.lastName,
e.emailId) " +
"FROM EmployeePosition d LEFT JOIN d.employees e")
List<EmployeeAndPositionDto> fetchEmpPosDataLeftJoin();
@Query(value = "SELECT new backend.dto.EmployeeAndPositionDto(
e.firstName, e.lastName, e.emailId, d.position) " +
"FROM EmployeePosition d RIGHT JOIN d.employees e")
List<EmployeeAndPositionDto> fetchEmpPosDataRightJoin();
}
ДТО
public class EmployeeAndPositionDto {
private String empFirstName;
private String empLastName;
private String empEmail;
private String empPosition;
public EmployeeAndPositionDto(String empFirstName, String empLastName,
String empEmail, String empPosition ){
this.empFirstName = empFirstName;
this.empLastName = empLastName;
this.empEmail = empEmail;
this.empPosition = empPosition;
}