JPA EntityManager的'find'将永远占据子类化实体,其总行数约为1000万

时间:2016-01-25 20:37:45

标签: java mysql hibernate jpa

我有三个子类(实体)扩展抽象类

@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class Parent {

    @Id
    private long id;

}

@Entity
public class FirstChild {

}

@Entity
public class SecondChild {

}

@Entity
public class ThirdChild {

}

我使用Hibernate作为我的持久性提供程序,使用MySQL作为数据库。创建了三个表(每个孩子一个)。

现在,我正在进行一个简单的查询,使用JPA的EntityManager (javax.persistence.EntityManager).

按ID查找实体

假设id为123456789.

当总共有几千行时(在所有三个表中合并):

    Parent p = entityManager.find(id,Parent.class); //Runs fine taking no time

当总共有1000万行时(在所有三个表中合并)

    Parent p = entityManager.find(id,Parent.class); //It's taking forever

虽然在相同的情况下,

 FirstChild first = entityManager.find(id,FirstChild.class) //Runs fine taking no time

 SecondChild second = entityManager.find(id,SecondChild.class) //Runs fine taking no time

 ThirdChild third = entityManager.find(id,ThirdChild.class) //Runs fine taking no time

这里发生了什么? 1000万不是那么大的数字。无论如何,具有完全类的查询运行得很好。请帮忙!谢谢!

0 个答案:

没有答案