Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 嵌套异常为javax.persistence.EntityNotFoundException_Spring_Spring Data - Fatal编程技术网

Spring 嵌套异常为javax.persistence.EntityNotFoundException

Spring 嵌套异常为javax.persistence.EntityNotFoundException,spring,spring-data,Spring,Spring Data,我在项目中使用spring引导和spring数据,我有两个类: class Mission implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue( strategy = GenerationType.IDENTITY ) private Long id; private String departure; pri

我在项目中使用spring引导和spring数据,我有两个类:

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
}
增加任务的方法:

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 );
}
当我尝试添加新任务时,会出现以下错误:

“找不到id为2的com.carpooling.entity.Station;嵌套异常为javax.persistence.EntityNotFoundException:找不到id为2的com.carpooling.entity.Station”

下面是发送的JSON对象:

{“出发”:“fff”,“到达”:“ffff”,“isFreeWayEnabled”:false,“车站”:[{“id”:1},{“id”:2}]}


你可能需要稍微改变一下

如果使用@ManyToOne,则引用的实体必须存在。否则,将该字段指定为您已经拥有的长字段,并通过单独的查询检索引用的实体

如果找不到请求的实体,它将抛出一个异常(javax.persistence.EntityNotFoundException),而不是返回null

如果延迟加载且未手动处理此异常,请使用@NotFound注释解决此异常。我已经给出了一个语法

@ManyToOne(
    fetch = FetchType.LAZY)
@NotFound(
    action = NotFoundAction.IGNORE)
@JoinColumn(
    name = COLUMN,
    referencedColumnName = COLUMN,
    insertable = false,
    updatable = false)
private Mission mission;
如果你做得对。。。 在我的例子中,错误是由于尝试对非可嵌入对象(实际上是“映射”)的映射使用
@ElementCollection
注释


我的解决方案以更平坦的方式映射对象,以使JPA喜欢它们。细节是去掉充当聚合器的父实体,并手动保存它所持有的不同集合(三个存储库而不是一个,三个save()调用而不是一个,少一个表).

谢谢你的回答。但是列字段是什么?外键列的名称。以及外键列引用的列的名称。这些是可选字段。你可能需要相应的列名。我刚刚添加了一个投票,因为这是解决我项目中相同问题的答案,谢谢,这是uld为接受答案@suryaduplicate。
@ManyToOne(
    fetch = FetchType.LAZY)
@NotFound(
    action = NotFoundAction.IGNORE)
@JoinColumn(
    name = COLUMN,
    referencedColumnName = COLUMN,
    insertable = false,
    updatable = false)
private Mission mission;