Hibernate+ Джерси, отсутствуют данные в ответе службы
Я пытаюсь столкнуться с некоторой проблемой с одним сервисом, который должен возвращать пользовательские данные + список всех получателей (назначенных идентификатору пользователя), но в результате я получаю только пользовательские данные, без получателей:
person_id: 3,
firstName: "Marek",
lastName: "Bawski",
email: "Pavel@karl.com",
password: "##@$#FDSgsdG",
address: {
street: "Street",
houseNumber: 4,
apartmentNumber: 0,
zipCode: "13-200",
province: "XSXSXSX"
}
SQL генерируется Hibernate:
Hibernate:
select
person0_.person_id as person_i1_2_0_,
person0_.apartment_number as apartmen2_2_0_,
person0_.house_number as house_nu3_2_0_,
person0_.province as province4_2_0_,
person0_.street as street5_2_0_,
person0_.zip_code as zip_code6_2_0_,
person0_.email as email7_2_0_,
person0_.firstName as firstNam8_2_0_,
person0_.lastName as lastName9_2_0_,
person0_.user_pwd as user_pw10_2_0_
from
Person person0_
where
person0_.person_id=?
Hibernate:
select
recipe0_.recipe_id as recipe_i1_4_,
recipe0_.aprox_price as aprox_pr2_4_,
recipe0_.calories as calories3_4_,
recipe0_.calories_cat_id as calories4_4_,
recipe0_.person_id as person_i9_4_,
recipe0_.raiting as raiting5_4_,
recipe0_.recipe_name as recipe_n6_4_,
recipe0_.recipe_cat_id as recipe_c7_4_,
recipe0_.weight as weight8_4_
from
recipe_table recipe0_
left outer join
Person person1_
on recipe0_.person_id=person1_.person_id
where
person1_.person_id=?
Hibernate:
select
person0_.person_id as person_i1_2_0_,
person0_.apartment_number as apartmen2_2_0_,
person0_.house_number as house_nu3_2_0_,
person0_.province as province4_2_0_,
person0_.street as street5_2_0_,
person0_.zip_code as zip_code6_2_0_,
person0_.email as email7_2_0_,
person0_.firstName as firstNam8_2_0_,
person0_.lastName as lastName9_2_0_,
person0_.user_pwd as user_pw10_2_0_
from
Person person0_
where
person0_.person_id=?
Hibernate:
select
components0_.recipe_id as recipe_i6_1_0_,
components0_.component_id as componen1_1_0_,
components0_.component_id as componen1_1_1_,
components0_.component_description as componen2_1_1_,
components0_.component_kcal as componen3_1_1_,
components0_.component_name as componen4_1_1_,
components0_.component_weight as componen5_1_1_,
components0_.recipe_id as recipe_i6_1_1_
from
component components0_
where
components0_.recipe_id=?
Основной класс сущности - рецепт имеет отношение:
@Entity
@Table(name="recipe_table")
public class Recipe{
@ManyToOne()
@JoinColumn(name="person_id")
@JsonManagedReference
private Person person; //getters/setters + other fields
}
Во-вторых, это лицо лица:
@Entity
public class Person {
@OneToMany(mappedBy = "person",fetch = FetchType.EAGER))
@JsonBackReference
private List<Recipe> recipes;//getters/setters+other fields
И способ получения всех рецептов пользователя выглядит так:
@GET
@Produces(MediaType.APPLICATION_JSON)
@Transactional
public Person getUserRecipeWithComponents(long id) {
Person person = findOne(id);
List<Recipe> recipes = recipeRepository.findByPerson(person);
person.setRecipes(recipes);
return person;
}
в RecipeRepository, расширенном JpaRepository:
List<Recipe> findByPerson(Person person);
А также есть одна странная вещь, которую я не ожидал, я создам простой метод для получения одного рецепта (только данные рецепта):
@GET
@Produces(MediaType.APPLICATION_JSON)
public Recipe findRecipeById(long id){
Recipe recipe = recipeRepository.findOne(id);
return recipe;
}
и после этого я получаю данные о получателях, которые также содержат пользовательские данные:
{
recipe_id: 3,
recipeName: "Pasta",
weight: 453,
calories: 1500,
aprox_price: 12,
raiting: 7,
person: {
person_id: 3,
firstName: "Marek",
lastName: "Bawski",
email: "Pawel@karol.pl",
password: "Karol123",
address: {
street: "Polna",
houseNumber: 4,
apartmentNumber: 0,
zipCode: "13-200",
province: "Pomorskie"
}
},
calories_cat_id: 1,
recipe_cat_id: 2
}
SQL, сгенерированный Hibernate:
Hibernate:
select
recipe0_.recipe_id as recipe_i1_4_0_,
recipe0_.aprox_price as aprox_pr2_4_0_,
recipe0_.calories as calories3_4_0_,
recipe0_.calories_cat_id as calories4_4_0_,
recipe0_.person_id as person_i9_4_0_,
recipe0_.raiting as raiting5_4_0_,
recipe0_.recipe_name as recipe_n6_4_0_,
recipe0_.recipe_cat_id as recipe_c7_4_0_,
recipe0_.weight as weight8_4_0_,
components1_.recipe_id as recipe_i6_1_1_,
components1_.component_id as componen1_1_1_,
components1_.component_id as componen1_1_2_,
components1_.component_description as componen2_1_2_,
components1_.component_kcal as componen3_1_2_,
components1_.component_name as componen4_1_2_,
components1_.component_weight as componen5_1_2_,
components1_.recipe_id as recipe_i6_1_2_,
person2_.person_id as person_i1_2_3_,
person2_.apartment_number as apartmen2_2_3_,
person2_.house_number as house_nu3_2_3_,
person2_.province as province4_2_3_,
person2_.street as street5_2_3_,
person2_.zip_code as zip_code6_2_3_,
person2_.email as email7_2_3_,
person2_.firstName as firstNam8_2_3_,
person2_.lastName as lastName9_2_3_,
person2_.user_pwd as user_pw10_2_3_
from
recipe_table recipe0_
left outer join
component components1_
on recipe0_.recipe_id=components1_.recipe_id
left outer join
Person person2_
on recipe0_.person_id=person2_.person_id
where
recipe0_.recipe_id=?
я испортил аннотации?
буду благодарен за вашу помощь!