Spring @Autowired注释。如何创建与db中的对象关系的对象?

时间:2015-01-15 19:28:06

标签: spring constructor dependency-injection autowired

我有与存储在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);
    }
}

请帮忙。

1 个答案:

答案 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