我有三个子类(实体)扩展抽象类
@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为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万不是那么大的数字。无论如何,具有完全类的查询运行得很好。请帮忙!谢谢!