В моем приложении JPA из многих дочерних объектов только первый дочерний объект (film_actor) отображается на весь родительский объект (актер).
Сущность 1
@Component
@Entity
@JsonIgnoreProperties
public class Actor {
@Id
@Column(name = "actor_id")
public String actorId;
@Column(name = "first_name")
public String fName;
@Column(name = "last_name")
public String lName;
@Column(name = "last_update")
public String lastUpdate;
@OneToOne(mappedBy="actor")
@JsonManagedReference
public FilmActor filmActor;
}
Сущность 2
@Component
@Entity
@JsonIgnoreProperties
public class FilmActor {
@Id
@Column(name="actor_id")
public String actorId;
@Column(name="film_id")
public String fId;
@Column(name="last_update")
public String lastUpdate;
@OneToOne()
@JoinColumn(name="actor_id")
@JsonBackReference
public Actor actor;
}
Операция Jpa
@Service
public class RestService {
@Autowired
public EntityManager em;
public ResponseObject getDetails(Actor actor) {
Query q = em.createQuery("select a,f from Actor a join a.filmActor f where a.actorId = :aid");
List<Object[]> l = q.setParameter("aid", actor.getActorId()).getResultList();
int i =0;
System.out.println(l.size());
Actor[] actArry = new Actor[l.size()];
//FilmActor[] fa = new FilmActor[l.size()];
for(Object[] o: l) {
actArry[i] = (Actor) o[0];
actArry[i].setFilmActor((FilmActor) o[1]);
i++;
} }
, отдельно запустив сгенерированный запрос гибернации в базе данных MySQL, он возвращает около 25 уникальных записей.Но, пытаясь с помощью приведенного выше кода, из 25 уникальных дочерних объектов объекта (film_actor), первый дочерний объект obj отображается на все остальные 24 неправильных родительских объекта объекта (актер).Есть ли что-нибудь, что мы можем сделать, чтобы сопоставить правильного потомка с его родительским объектом.