在我的JPA应用程序中,在许多子对象中,只有第一个子对象(film_actor)映射到所有父对象(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个错误的父实体对象(actor)。 我们可以做些什么来将正确的孩子映射到其父对象。