我有与存储在db中的其他对象有关的实体模型。
当我第一次反对时,我在构造函数中添加了另一个对象的id。
但是当我构造函数体时,我必须从db整个对象(第二个)获取并将其作为关系进行签名。在模型中使用dao会给我nullPointerException
。
我怎么能做到这一点?
这是构造函数:
@Transient @Autowired public SkeletonElementDao skeletonElementDao;
public SkeletonElement(Long id, String name, Long parent_id) {
super(id, name);
SkeletonElement parentSkeletonElement = null;
try {
parentSkeletonElement = skeletonElementDao.get(parent_id);
} catch(NullPointerException e) {
System.out.println("Creating element without parent_old ");
} finally {
this.setParent(parentSkeletonElement);
}
}
请帮忙。
答案 0 :(得分:0)
尝试@PostConstruct注释。 Spring只能在调用构造函数后自动连接字段。
@Transient @Autowired public SkeletonElementDao skeletonElementDao;
public SkeletonElement(Long id, String name, Long parent_id) {
super(id, name);
//Store these to private final fields
}
@PostConstruct
public void init() {
SkeletonElement parentSkeletonElement = null;
try {
parentSkeletonElement = skeletonElementDao.get(parent_id);
} catch(NullPointerException e) {
System.out.println("Creating element without parent_old ");
} finally {
this.setParent(parentSkeletonElement);
}
}
其他方式是使用constructor injection