有人可以解释这个hibernate方法的作用,

时间:2011-03-21 04:58:00

标签: java hibernate

我是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。

我想知道,

  1. 这里的id是否是主键?
  2. 有些人可以解释一下这种方法的工作原理吗?它是否只返回SampleBean对象中的一行?
  3. 如果它返回多行会发生什么?
  4. PS:使用SampleBean映射的表的主键是INT类型。

2 个答案:

答案 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

相关问题