2012-10-21 14 views
1

我在我的实体对象中收到以下消息?基本属性类型不应该是IDao - intellij消息

基本属性类型不应该是IDao

凡正在使用这样的:

@Entity 
@Table 
public final class MyEnity { 

    @Resource(name = "Dao") 
    private IDao dao; 

我知道这个名字是坏的,但什么是与注射吾道问题(注释与存储库)到我的Domain对象被注释为一个hibernate实体?而IDao是一个由Dao类实现的接口...

回答

6

IDao似乎是一个处理元素被注入到一个实体中,并且你不打算坚持它。如果是这样,您应该将其标记为transient,以便ORM在实体的CRUD操作期间忽略它。

@Resource(name = "Dao") 
private transient IDao dao; 

顺便说一句,我没有看到你的实体是@Configurable。你打算如何注入dao? ORM将使用默认构造器创建一个类型为MyEntity的新对象,并调用setter来设置数据库中的值。您的IDao dao不会被注入,因为这样的实例不是Spring管理的bean。您必须将MyEntity标记为@Configurable才能使其处于弹簧托管状态,以便使用new运算符创建的实例将获得注入资源。

+0

好的,有没有更好的方法将dao注入到域对象中? – NimChimpsky

+0

获取资源注入到使用'new'运算符创建的对象的唯一方法是'@ Configurable'(http://vikdor.blogspot.in/2012/08/using-configurable-to-inject-resources.html)注释。 – Vikdor

+0

我得到的印象可能是错误的,你认为这可能不是最好的主意?我看不出还有什么可以使用域对象的reposity/dao? – NimChimpsky

相关问题