2017-08-14 89 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「 –

相關問題