Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用load/get和泛型_Java_Hibernate - Fatal编程技术网

Java 使用load/get和泛型

Java 使用load/get和泛型,java,hibernate,Java,Hibernate,在Hibernate中,如何使用泛型加载实体 目前我正在做: Entity e = (Entity) session.load(Entity.class, 123); 在NHibernate中,使用泛型,我可以: session.Get<Entity>(123); Hibernate的等价物是什么?不幸的是,Java还不支持 您所能做的最好的事情是用另一种方便的方法将其包装起来,以消除强制转换的需要: public <T> T get(Class<T> c

在Hibernate中,如何使用泛型加载实体

目前我正在做:

Entity e = (Entity) session.load(Entity.class, 123);
在NHibernate中,使用泛型,我可以:

session.Get<Entity>(123);

Hibernate的等价物是什么?

不幸的是,Java还不支持

您所能做的最好的事情是用另一种方便的方法将其包装起来,以消除强制转换的需要:

public <T> T get(Class<T> cls, Long id) {
    return cls.cast(session.load(cls, id));
}

不幸的是,Java还不支持

您所能做的最好的事情是用另一种方便的方法将其包装起来,以消除强制转换的需要:

public <T> T get(Class<T> cls, Long id) {
    return cls.cast(session.load(cls, id));
}

要添加到BalusC的答案中,可以在调用泛型包装器方法时更加明确。因此,如果包装器方法位于类GenericSession中:

public class GenericSession {

    private GenericSession() {}

    public static <T> T get(Class<T> cls, Long id) {
        return cls.cast(session.load(cls, id));
    }
}
你可以这样称呼它:

Entity e = GenericSession.<Entity>get(Entity.class, 123);

这会让您更好地了解事物是如何被转换的。

要添加到BalusC的答案中,您可以在调用通用包装器方法时更加明确。因此,如果包装器方法位于类GenericSession中:

public class GenericSession {

    private GenericSession() {}

    public static <T> T get(Class<T> cls, Long id) {
        return cls.cast(session.load(cls, id));
    }
}
你可以这样称呼它:

Entity e = GenericSession.<Entity>get(Entity.class, 123);

这会让你更好地了解事物是如何被转换的。

这意味着一个静态会话。你不想那样,真的。我将该方法视为一个函数,这意味着将会话添加为一个参数:publicstaticgetsession,Class cls,Long id;实际上,在方法调用中不需要。你不应该需要它,但是如果你不把它放在那里,一些编译器会抱怨。这意味着一个静态会话。你不想那样,真的。我将该方法视为一个函数,这意味着将会话添加为一个参数:publicstaticgetsession,Class cls,Long id;实际上,您不需要在方法调用中使用。您不应该使用它,但是如果您不将它放在那里,一些编译器会抱怨。