@Entity
    @Table(name = "your_entity")
    public class YourEntityClass implements IEntity<Long> {

        @Id
        @SequenceGenerator(name = "gen_test_entity2_id", sequenceName = "test_entity2_id_seq", allocationSize = 10)
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gen_test_entity2_id")
        private Long id;

        @Column(name = "name", nullable = false, length = 64)
        private String name;

        /*
         * Create constructors, getters, setters, isEquals, hashcode, etc.
         */
    }

public interface IEntity<I extends Serializable> extends Serializable {

    /**
     * Property which represents id.
     */
    String P_ID = "id";

    /**
     * Get primary key.
     *
     * @return primary key
     */
    I getId();

    /**
     * Set primary key.
     *
     * @param id primary key
     */
    void setId(I id);
}


对于上面的代码,我的问题是,为什么YourEntityClass需要在Long中传递IEntity<Long>?为什么不像IEntity<String>这样的东西呢?是否因为idLong类型,并且id的getter必须返回我们提供给IEntity的相同类型?

最佳答案

YourEntityClass<Long>任意放入IEntity中。实现Serializable的任何类型都可以去那里。

I选择类型后,您的getId()方法必须返回相同的类型。

例如,您可能有另一个实现IEntity<String>getId()的类,在这种情况下,必须返回String

09-27 09:45