我在Entity对象中收到以下消息?


  基本属性类型不应为IDao


像这样使用它的地方:

@Entity
@Table
public final class MyEnity {

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


我知道这个名字不好,但是将我的Dao(注有存储库)注入我的注解为休眠实体的Domain对象有什么问题? IDao是由Dao类实现的接口...

最佳答案

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

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


顺便说一句,我看不到您的实体是@Configurable。您打算如何将dao注入其中? ORM将使用默认构造函数创建类型为MyEntity的新对象,并调用设置器以从数据库中设置值。您的IDao dao不会被注入,因为这样的实例不是spring-managed bean。您必须将MyEntity标记为@Configurable以使其受弹簧管理,以便使用new运算符创建的实例将获得资源注入。

10-07 12:02