JPA子对象映射问题

时间:2018-11-17 21:05:00

标签: hibernate spring-boot jpa jpql

在我的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)。 我们可以做些什么来将正确的孩子映射到其父对象。

0 个答案:

没有答案
相关问题