使用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 @Id16 @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 }