2017-08-14 59 views
1

我使用的弹簧引导和春季数据在我的项目和之前保存的瞬态的实例,我有两大类:org.hibernate.TransientPropertyValueException:对象引用一个未保存的瞬态的实例 - 冲洗

class Mission implements Serializable { private static final long 
serialVersionUID = 1L; 
@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private Long    id; 
private String   departure; 
private String   arrival; 
private Boolean   isFreeWayEnabled; 
@OneToMany(mappedBy = "mission") 
private List<Station>  stations; 
// getters and setters 
} 

和第二类是:

@Entity 
public class Station implements Serializable { 

private static final long serialVersionUID = 1L; 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private Long    id; 
private String   station; 

@ManyToOne(fetch = FetchType.LAZY) 
@JsonBackReference 
private Mission   mission; 
//getters and setters 
} 

了Methode其中添加团:

public Mission addMision(Mission mission) { 
    // TODO Auto-generated method stub 
    // Mission mission = getMissionById(mission.getId()); 
    for (Station station : mission.getStations()) { 
     station.setMission(mission); 
     stationRepository.save(station); 
    } 
    return missionRepository.save(mission); 
} 

当我试图添加一个新的任务它给上述错误继承人JSON对象:

{"departure":"fff","arrival":"ffff","isFreeWayEnabled":false,"stations":[{"id":1},{"id":2}]}

回答

1

mession不坚持,你需要或者将其保存或级联它在车站,你也有一个双向的关系,这意味着关系的每个部分应该参照其他部分 所以,你的任务类初始化电台列表

@OneToMany(mappedBy = "mission") 
private List<Station> stations = new ArrayList<>(); 

添加级联在你的站

@ManyToOne(fetch = FetchType.LAZY, cascade=CascadeType.ALL) 
@JsonBackReference 
private Mission   mission; 

然后在您添加逻辑,把关系每一个部分的参考其它

public Mission addMision(Mission mission) { 

List<Station> stations = mission.getStations(); 
mission.setStations(new ArrayList<Station>()); 
for (Station station : stations) { 
    station.setMission(mission); 
    mission.getStations.add(station); 
    mission = stationRepository.save(station).getMission(); 
} 
return mission; 
} 
+0

感谢,但我想that..it不工作 –

+0

@imsiimsi我更新我的回答 –

+0

好,我固定的,但它仍然给另一个错误是:无法找到id为2的com.carpooling.entity.Station;嵌套的异常是javax.persistence.EntityNotFoundException:无法找到id为2的com.carpooling.entity.Station“ –

相关问题