gpt4 book ai didi

java - Hibernate 的通用 get 方法

转载 作者:行者123 更新时间:2023-11-30 04:19:42 25 4
gpt4 key购买 nike

我正在尝试获取一个通用的 get 方法,通过 hibernate 的某个 id 从数据库加载对象。在我开始之前,该方法看起来像:

public static Object getObjectFromDatabase(Class c, long id) {
Transaction newTransaction = getSession().beginTransaction();
Object result = getSession().get(c, id);

newTransaction.commit();


return result;
}

然后我尝试使用以下代码来获取通用方法:

public static <T> T getObjectFromDatabase(Class<T> c, long id) {
Transaction newTransaction = getSession().beginTransaction();
T result = getSession().get(c, id);

newTransaction.commit();


return result;
}

不幸的是这条线

   T result = getSession().get(c, id);

给出错误:类型不匹配:无法从对象转换为 T

我知道我可以使用显式转换为 T

   T result = (T) getSession().get(c, id);

但是有没有办法避免这种转换?

谢谢

最佳答案

否 - Session 中的 get(Class, Serializable) 方法仅声明为返回 Object。它本身不是通用方法,这就是为什么您需要以某种方式进行转换的原因。

您可以使用 Class.cast 使 Actor 更安全方法虽然:

T result = c.cast(getSession().get(c, id));

这将在执行时进行正确检查的强制转换,而不是仅仅执行实际上不执行任何操作的“假装”强制转换。

关于java - Hibernate 的通用 get 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17378166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com