当前位置: 首页 > 知识库问答 >
问题:

嵌套异常javax.persistence.实体

贲铭
2023-03-14

我在我的项目中使用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
}

第二类是:

@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
 }

添加任务的方法:

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}]}

共有2个答案

全流觞
2023-03-14

在我的例子中,错误是因为试图使用@ElementCollection注释来表示不可嵌入的@embedded对象的映射(实际上是“映射”)

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

濮阳旭东
2023-03-14

你可能需要稍微改变一下。

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

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

如果您是懒惰加载,并且没有手动处理此异常,请使用@NOFEND注释来解决此异常。我已经给出了一个语法...

@ManyToOne(
    fetch = FetchType.LAZY)
@NotFound(
    action = NotFoundAction.IGNORE)
@JoinColumn(
    name = COLUMN,
    referencedColumnName = COLUMN,
    insertable = false,
    updatable = false)
private Mission mission;
 类似资料:
  • 我正在获取dynamo db中的所有记录,对于每条记录,我都要对一个外部服务进行多线程调用。 但是我得到了这个错误: 嵌套异常是java.util.concurrent.executionException:org.springframework.web.client.HttpServererRoreXception:500 null] 编辑: 错误的完整堆栈跟踪: org.springframe

  • 我使用Spring+Hibernate+MySQL for web应用程序进行开发。但是在过去的一周里,我总是在尝试运行orgdao.findAll()获取所有组织时遇到“nested exception is org.springframework.dao.invalidDataAccessResourceUsageException:”异常。即使我评论所有的关系属性,但仍然没有幸运。以下是代码

  • 异常: 嵌套任务透传 重新处理生成器嵌套,需要将子生成器异常抛向父生成器。 当生成器迭代过程发生未捕获异常,生成器将会被关闭,Generator::valid返回false,未捕获异常会从生成器内部被抛向父作用域,嵌套子生成器内部的未捕获异常必须最终被抛向根生成器的calling frame,PHP7中yield-from对嵌套子生成器resume时产生的异常,采取goto try_again传递

  • 问题内容: 我在Spring中使用javax-validation和hibaernate-validator进行表单验证。除了用于Spring的基本必要JAR文件。 我包括: 验证API-1.1.0.Final hibernate-validator-5.1.0.Final 我读到某处也关注到了spl4j版本:所以我也告诉: 错误原因可以归因于slf4j和log4j兼容性吗? 我使用注释基础验证。

  • 我在Spring中使用javax-validation和hibaernate-validator进行表单验证。而不是Spring所必需的基本JAR文件。 我在某处读到spl4j版本也受到关注,所以我也告诉大家: 错误的原因会不会是由于slf4j和log4j的兼容性? 我使用基于注释的验证。

  • 如能提供任何帮助,我将不胜感激。 谢谢!