我是hibernate的初学者。我在互联网上看到了一些样本,
org.hibernate.Session session;
//assuming session instance is initialized
SampleBean msoft=(SampleBean)session.get(SampleBean.class,id);
//**id** is of the type Long
文档说明是,
Object get(Class clazz,Serializable id)
返回给定实体类的持久实例和给定标识符,如果没有这样的持久实例,则返回null。
我想知道,
PS:使用SampleBean映射的表的主键是INT类型。
答案 0 :(得分:2)
我想知道,这里是否是id 主键?
是。 id应该是唯一的。
有些机构可以解释一下,这是怎么回事 方法有效,
在DB中查找指定的ID并返回clazz实例。
是否只返回一行 SampleBean对象?
是。由于id是唯一的,因此应该只有一行。
如果它返回更多会发生什么 比一行?
如果id是唯一或主键,则不会发生。
答案 1 :(得分:1)
是的,这里的id是主键。它将是指定实体使用的任何类型的实例,即其主键(通常为Integer,Long或String,但其他类型完全可能)。
该方法通过转到数据库中与给定实体类型(在本例中为SampleBean
)对应的表并执行基于主键的提取来工作。实质上,它运行的SQL查询大致类似于SELECT * FROM sampleBeanTable t WHERE t.primaryKey = [id];
。
最多返回1行(或更准确地说,实体的1个实例)(或者您的数据库实例非常非常破碎,因为如果有多行意味着两个或多个对象具有相同的密钥) 。如果找不到给定键的对象,则该方法返回null
。