级联表外键对象不存在

表ListRelation通过resourceId与resource表级联:

@ManyToOne(fetch = FetchType.LAZY)

@JoinColumn(name = "resource_id")

@NotFound(action=NotFoundAction.IGNORE)

private Resource resource;

如果数据库中有一个资源在resource表中找不到,调用(ListRelation)obj.getResource( )时会报异常:

com.sun.jdi.InvocationException occurred invoking method.

解决方法就是在级联表时加入一个属性,上面粗体显示,注解配置实体类的关联关系,在many-to-one,one-to-one关联中,一边引用自另一边的属性,如果属性值为某某的数据在数据库不存在了,hibernate默认会抛出异常。解决此问题,加上如下注解就可以了:

@NotFound(action=NotFoundAction.IGNORE),意思是找不到引用的外键数据时忽略,NotFound默认是exception

JPA注解记录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容