2013-03-12 28 views
1

使用获取数据从数据库中休眠的一个例子:休眠4.1 - 获得()函数,为任何对象

Cat cat = session.get(Cat.class, catId); 

我问自己,如果有可能产生一个静态函数(例如,在HibernateUtil.java),它允许从会话中获取任何对象。类似的东西:

public static Object getObjectfromDatabase(Class class, long id) { 
    ... 
    return session.get(class, id); 
} 

当然“类级”是没有有效的表达,但我怎么能在这种情况下,识别对象?

感谢

+0

你是什么意思的“我怎么能在这种情况下识别一个对象”? – hop 2013-03-12 14:05:35

+0

我需要一些东西来获得对象的类。但是,如果我使用例如对象的实例,但我有一个猫对象,我试图找出类(object.getClass()我总是得到对象作为结果。 – MS1 2013-03-12 14:09:59

+0

这似乎没有太多休眠与我有关这似乎是一个基本的java问题 – 2013-03-12 14:40:24

回答

0

虽然Class class是无效的,可以使用Class<?> class。通过这种改变,通用查询方法应该可以工作。如果你不知道班级,请从实体本身获取:

MyEntity entity = (MyEntity) getObjectfromDatabase(MyEntity.class, entity.getId()); 
+0

谢谢你的回答,对我来说似乎很好,但是我尝试过了,它不起作用,我认为问题在于,(在你的情况下)实体在null之前是空的。 getClass()不能工作 – MS1 2013-03-12 14:24:22

+0

@ MS1哎!绝对,谢谢你的注意。Sincle你知道你调用该函数的实体类,你也可以使用该类对象我已经编辑了相应的答案 – kostja 2013-03-12 14:28:46

+0

这是它:)精彩,谢谢! – MS1 2013-03-12 14:46:36