我在我的Entity对象中收到以下消息?
基本属性类型不应该是IDao
这样使用的地方:
@Entity
@Table
public final class MyEnity {
@Resource(name = "Dao")
private IDao dao;
我知道这个名字很糟糕,但是将我的Dao(带有存储库注释)注入我的注释为hibernate实体的Domain对象有什么问题? IDao是由Dao类实现的接口......
答案 0 :(得分:6)
IDao
似乎是一个处理元素,它被注入一个实体而你不打算坚持它。如果是,则应将其标记为transient
,以便ORM在实体的CRUD操作期间忽略它。
@Resource(name = "Dao")
private transient IDao dao;
顺便说一句,我认为你的实体不是@Configurable
。你打算如何注入dao
? ORM将使用默认的constrcutor创建类型为MyEntity
的新对象,并调用setter来设置数据库中的值。您的IDao dao
将不会被注入,因为这样的实例不是Spring管理的bean。您必须将MyEntity
标记为@Configurable
才能对其进行弹簧管理,以便使用new
运算符创建的实例将获取注入的资源。