使用hibernate 注解配置实体类的关联关系,在many-to-one,one-to-one关联中,一边引用自另一边的属性,如果属性值为某某的数据在数据库不存在了,hibernate默认会抛出异常。解决此问题,加上如下注解就可以了:
@NotFound(action=NotFoundAction.IGNORE),意思是找不到引用的外键数据时忽略,NotFound默认是exception
1 @Entity 2 @Table(name = "ICT_COMPUTER_LOCATION") 3 public class IctComputerLocation { 4 private static final long serialVersionUID = 1L; 5 6 private Integer id; 7 /** IDC编号 */ 8 private String idcNum; 9 10 private Integer ictBaseId; 11 12 /** IctBase实体类 */ 13 private IctBase ictBase; 14 15 @Id 16 @GeneratedValue(strategy = GenerationType.AUTO) 17 @Column(name = "ID") 18 public Integer getId() { 19 return id; 20 } 21 22 public void setId(Integer id) { 23 this.id = id; 24 } 25 26 @Column(name = "IDC_NUM") 27 public String getIdcNum() { 28 return idcNum; 29 } 30 31 public void setIdcNum(String idcNum) { 32 this.idcNum = idcNum; 33 } 34 35 @Column(name = "ICT_BASE_ID") 36 public Integer getIctBaseId() { 37 return ictBaseId; 38 } 39 40 public void setIctBaseId(Integer ictBaseId) { 41 this.ictBaseId = ictBaseId; 42 } 43 44 @ManyToOne(fetch = FetchType.LAZY) 45 @JoinColumn(name = "ICT_BASE_ID", referencedColumnName = "ID", unique = false, nullable = false, insertable = false, updatable = false) 46 @NotFound(action=NotFoundAction.IGNORE) 47 public IctBase getIctBase() { 48 return ictBase; 49 } 50 51 public void setIctBase(IctBase ictBase) { 52 this.ictBase = ictBase; 53 }