【发布时间】:2015-01-15 19:28:05
【问题描述】:
我有与存储在数据库中的其他对象相关的实体模型。
当我第一个对象时,我在构造函数中添加了另一个对象的 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);
}
}
请帮忙。
【问题讨论】:
-
Spring 如何在调用构造函数之前自动装配字段?
-
我不知道。但我有类似的事情要做:D
-
使用构造函数注入。
-
您的实体不应依赖于 DAO。 JPA 创建您的实体,而不是 Spring。构造函数的调用者应该是使用 DAO 获取父对象并将父对象而不是其 ID 传递给构造函数的调用者。
-
我以为一直在这样做。你能给我一些代码示例吗?我必须以某种方式在构造函数中找到 dao。
标签: spring constructor dependency-injection autowired