相关疑难解决方法(0)

将Hibernate代理转换为真实实体对象

在Hibernate期间Session,我正在加载一些对象,并且由于延迟加载,其中一些被加载为代理.一切都好,我不想把懒人装完.

但后来我需要通过RPC将一些对象(实际上是一个对象)发送到GWT客户端.碰巧这个具体对象是代理.所以我需要把它变成一个真实的对象.我在Hibernate中找不到类似"实现"的方法.

如何知道他们的类和ID,将一些对象从代理转换为实际?

目前,我看到的唯一解决方案是从Hibernate的缓存中驱逐该对象并重新加载它,但由于许多原因它真的很糟糕.

java proxy hibernate jpa lazy-loading

153
推荐指数
6
解决办法
9万
查看次数

Hibernate返回基类的代理

我的域模型中有一个层次结构,由类描述:

@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class BaseEntity {
    @Id
    private Long id;

    // other fields
}

@DiscriminatorValue(value = "Individual")
public class IndividualEntity extends BaseEntity {
    // fields
}

@DiscriminatorValue(value = "Branch")
public class BranchEntity extends BaseEntity {
    // fields
}
Run Code Online (Sandbox Code Playgroud)

我正在获取这样的对象:

Specification<BaseEntity> specification = createSpecification();
BaseEntity entity = baseRepository.findOne(specification);
Run Code Online (Sandbox Code Playgroud)

(我正在使用spring-data)

问题是Hibernate返回代理对象(我理解),但代理是BaseEntity,而不是正确的子类(它的'类是BaseEntity_$$_jvsted9_26,因此entity instanceof IndividualEntity是假的).

有趣的是,并非所有对象都作为代理返回.
我在循环中获取实体(常见事务),其中一些以正常形式(即IndividualEntity/ BranchEntity)返回,一些以代理方式返回.
如果我改变机制,那么每次获取都是在单独的事务中完成的 - 根本不返回任何代理对象.

我知道我可以解开那个代理(例如像这里),但这种行为的原因是什么(对我来说有点奇怪),我可以避免它吗?

java orm hibernate spring-data-jpa

6
推荐指数
1
解决办法
521
查看次数

JPA/Hibernate实例无法正常工作

想象一下情况:

@javax.persistence.Inheritance(strategy=javax.persistence.InheritanceType.JOINED)
@javax.persistence.DiscriminatorColumn
@javax.persistence.Entity
@javax.persistence.Table(name="PARENT")
public abstract class Parent{
...
}

@javax.persistence.Entity
@javax.persistence.Table(name="A")
public class A extends Parent{
...
}

@javax.persistence.Entity
@javax.persistence.Table(name="B")
public class B extends Parent{
...
}


Parent p = new A();
Run Code Online (Sandbox Code Playgroud)

现在我们称之为:

p instance of A
Run Code Online (Sandbox Code Playgroud)

总是返回false !!

在OpenJPA上运行正常!

我应该提交错误吗?Hibernate 4.3.10

java hibernate jpa

0
推荐指数
1
解决办法
1721
查看次数

标签 统计

hibernate ×3

java ×3

jpa ×2

lazy-loading ×1

orm ×1

proxy ×1

spring-data-jpa ×1