@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>
这样的东西呢?是否因为id
是Long
类型,并且id
的getter必须返回我们提供给IEntity
的相同类型? 最佳答案
YourEntityClass
将<Long>
任意放入IEntity
中。实现Serializable
的任何类型都可以去那里。
为I
选择类型后,您的getId()
方法必须返回相同的类型。
例如,您可能有另一个实现IEntity<String>
和getId()
的类,在这种情况下,必须返回String
。