Json рекурсивная проблема в Hibernate ResponseEntity Spring-MVC

Привет, я занимаюсь разработкой приложения с использованием Spring Framework - 4.0.1, JSTL - 1.2.1, Hibernate - 4.3.x и добавлением jackson-all-1.9.0.jar. Я пытаюсь получить данные пользователя при входе в систему от angularjs.

$scope.login = function () {
    console.log("url: " + app.baseURL + "login  for username: " + $scope.loginBean.userName);
    $http({
        method: 'POST',
        url: app.baseURL + "login",
        data: $scope.loginBean,
        headers : {
            'Content-Type' : 'application/json'
        }
    }).then(
        function (response) {
            console.log("response: " + response.data.name);
        }, function (error) {
            console.log("error: " + error.status + "\r\n" + error.data);
    });
}

Ниже приведены соответствующие классы Java

@Entity
@Table(name="user", catalog="enproj")
public class User  implements java.io.Serializable {
    private Integer id;
    ... // other items
    private Set<Company> companies = new HashSet<Company>(0);
    ... // more items, getters and setters
    @OneToMany(fetch=FetchType.LAZY, mappedBy="user")
    public Set<Company> getCompanies() {
        return this.companies;
    }    
    public void setCompanies(Set<Company> companies) {
        this.companies = companies;
    }

@Entity
@Table(name="company", catalog="enproj")
public class Company  implements java.io.Serializable {
    private Integer id;
    private User user;
    ... // other items, getters and setters
    @ManyToOne(fetch=FetchType.LAZY)
    public User getUser() {
        return this.user;
    }    
    public void setUser(User user) {
        this.user = user;
    }

и мой метод контроллера выглядит

@RequestMapping(value = "/login", method = RequestMethod.POST , produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<User> login(@RequestBody LoginBean loginBean) {
    User user = User.GetUser(loginBean);
    if (user == null) {
        return new ResponseEntity<User>(HttpStatus.NOT_FOUND);
    }
    return new ResponseEntity<User>(user, HttpStatus.OK);
}

Я гуглил об этом и нашел использовать некоторые методы, такие как @JsonManageReference а также @JsonBackReference ИЛИ ЖЕ @JsonIgnore Но то, что я пробовал, терпит неудачу, всегда получая ошибку ниже function (error)

SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at xc (angular.js:16)
error: undefined // my log
undefined // my log

В Chrome Network Monitor в качестве отклика я вижу рекурсивный JSON. Может быть, я использовал методы неправильно. Кто-то указывает мне, как избежать рекурсивной проблемы JSON. Благодарю.

0 ответов

Другие вопросы по тегам