小编rma*_*ipe的帖子

EntityNotFoundException 当记录存在时,更改表后

我有一个表 (Records),它与另一个表 (ProgramTypes) 有外键关系。该应用程序使用 Hibernate-JPA,因此这通过使用@ManyToOne;反映在代码中。@JoinColumnRecords 表中的@OneToMany标签,并在 ProgramTypes 表中具有外键约束和标签。

所以我对 Records 表做了一些列更改,没有触及这个特定的约束,突然我在检索数据时看到以下类型的消息。

javax.persistence.EntityNotFoundException: Unable to find package.com.ProgramTypes with id {}
Run Code Online (Sandbox Code Playgroud)

记录存在于数据库中,如果我替换映射

@ManyToOne
@JoinColumn(name="PRGRAMTYPESID", nullable=false)
private ProgramTypes programTypes;
Run Code Online (Sandbox Code Playgroud)

private long programTypesId
Run Code Online (Sandbox Code Playgroud)

有用。只是为了进一步混淆我发现它在某种程度上有效的映射 - 在满足应用程序搜索条件的单个特定记录的情况下。我对问题的来源感到困惑,并希望得到任何帮助来理解它。

编辑-这是使用的查询

String queryBuild = "select rec from Records rec " + 
                "where rec.locationsId in (:locationsId) and rec.roles.code in (:roleList)";
            Query query = entityManager.createQuery(queryBuild);
            query.setParameter("locationsId", locationsIdList);
            query.setParameter("roleList", roleList);
            return query.getResultList();
Run Code Online (Sandbox Code Playgroud)

这是要求的堆栈跟踪。

javax.persistence.EntityNotFoundException: Unable to find modules.sc.model.ProgramTypes with id 106
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$JpaEntityNotFoundDelegate.handleEntityNotFound(EntityManagerFactoryBuilderImpl.java:183)
    at …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa hibernate-onetomany

3
推荐指数
1
解决办法
3195
查看次数

标签 统计

hibernate ×1

hibernate-onetomany ×1

java ×1

jpa ×1