1

我在我的实体对象中收到以下消息?

基本属性类型不应该是 IDao

像这样使用它的地方:

@Entity
@Table
public final class MyEnity {

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

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

4

1 回答 1

8

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

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

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

于 2012-10-21T13:58:28.833 回答