我在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
运算符创建的实例将获得资源注入。