级联表外键对象不存在

表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注解记录

你可能感兴趣的:(级联表外键对象不存在)