你先说,你Comment类这是什么类?
实体类么。如果是实体类,你用一个接口属性,意义不大吧

解决方案 »

  1.   

    你在@OneToOne或者@OneToMany或者@ManyToOne或者@ManyToMany的时候里面都有一个属性叫targetEntity这个就是用来告诉hibernate我这个实体对应的类型是什么他的值是Class
      

  2.   

    商品类(Product.java)和评论类(Comment.java)都是实体类。
    我现在主要想做的功能是 让用户可以对商品评论,也可以对评论进行回复。
    回复评论我看做是对评论进行评论。所以让商品类和评论类都实现了可评论接口(CommentAble.java)。
    Comment中的接口属性CommentAble commObj要是用上targetEntity的是不是就绑定了某个指定类型了?我定义
    这个属性为接口类型的原因就是要这个属性的类型是在运行时动态绑定的。它可能是一个Comment类型的对象,也可能是一个Product类型的对象。至于为何需要这个接口类型的属性,那是因为我想到后面可能会有取到一个评论实例,然后需要在这条评论中取到他的评论对象的某些信息的情况,而他的评论对象是抽象的,可以是实现了CommentAble的任何类型。
    要不是考虑到这个原因的话,其实都可以让商品类跟评论类进行单向一对多关联就可以。取到商品实例的时候直接取商品里的评论集合属性就可以取到他的所有评论。