Состояние HTTP 500 — Ошибка обработки запроса; вложенным исключением является org.hibernate.QueryException: не удалось разрешить свойство

Я новичок в Spring MVC и Hibernate и столкнулся с проблемой. У меня есть дочерняя таблица, созданная Hibernate, которая связана с пользовательской таблицей (многие к одному). Когда Hibernate создает дочернюю таблицу, автоматически добавляется 'user_object_id' - по 'user_object' (тип User) эти две таблицы связаны. Но когда я хочу показать пользователю только его детей, возникает проблема:

HTTP Status 500 - Request processing failed; nested exception is org.hibernate.QueryException:
could not resolve property: user_object_id of: com.websystique.springmvc.model.Child

Я получаю дочерний объект из таблицы в классе ChildDaoImpl в методе findAllUserChilds, а затем сопоставляю с ChildDTO (объект POJO) в ChildController. Ошибка связана с 'user_object_id' в дочерней модели, потому что этой переменной там не существует, потому что она создается автоматически Hibernate и возвращается в findAllUserChilds() по критериям. Как я могу решить эту проблему?

Ребенок:

@Entity
@Table(name= "Child")
public class Child implements Serializable
{ 

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;

@Column (nullable=false)
private String first_name;

@Column (nullable=false)
private String last_name;

@Column (nullable=false)
private String birth_city;

@Column (nullable=false)
private String pesel;

@Column (nullable=false)
private String sex;

@Column (nullable=false)
private String blood_group;

@Column (nullable=false)
private String birth_date;


@ManyToOne
private User user_object;

public User getUser_object() {
    return user_object;
}

public void setUser_object(User user_object) {
    this.user_object = user_object;
}

(... 
some getters and setters
...)

}

Детский контроллер:

@RequestMapping(value = "/mainpanel" , method = RequestMethod.GET, 
        headers = "accept=application/json")
public List<ChildDTO> listChild(HttpServletResponse request)
{
    Authentication auth =     SecurityContextHolder.getContext().getAuthentication();

    String username = auth.getName();

    User user = userService.findUserByUsername(username);

    List<Child> list = service.findAllUserChilds(user.getId());

    List<ChildDTO> result = new ArrayList<>();

    for (Child child : list)
    {
        result.add(ChildMapper.map(child));
    }

    return result;
}

ChildDaoImpl:

@Repository("ChildDao")
public class ChildDaoImpl extends AbstractDao<Integer, Child> implements     ChildDao {

@SuppressWarnings("unchecked")
public List<Child> findAllUserChilds(int user_id)
{
    Criteria criteria = createEntityCriteria();
    criteria.add(Restrictions.eq("user_object_id", user_id));
    return (List<Child>) criteria.list();
}

}

person KamilosD    schedule 22.05.2016    source источник


Ответы (1)


У ребенка нет свойства user_object_id, но user_object. Вы должны использовать user_object.id (если id — это имя атрибута в User)

person Turo    schedule 22.05.2016