Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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 实体经理没有';t像inserted一样返回所有元素_Java_Postgresql_Entitymanager - Fatal编程技术网

Java 实体经理没有';t像inserted一样返回所有元素

Java 实体经理没有';t像inserted一样返回所有元素,java,postgresql,entitymanager,Java,Postgresql,Entitymanager,我与实体经理有问题。我想在一个数据库中插入大约4000个对象。在insert语句之后,我希望返回所有元素以进行进一步处理。问题是我刚拿回1700个物体 这是服务: public void addAllElementsToDatabase() { System.out.println("### listObjects: " + listObjects.size()); for (Object object : listObjects) { objectDAO.c

我与实体经理有问题。我想在一个数据库中插入大约4000个对象。在insert语句之后,我希望返回所有元素以进行进一步处理。问题是我刚拿回1700个物体

这是服务:

public void addAllElementsToDatabase() {

    System.out.println("### listObjects: " + listObjects.size());

    for (Object object : listObjects) {
        objectDAO.create(object);
        // objectDAO.edit(object);
    }

    System.out.println("### listObjects after: " + objectDAO.findAll().size());
    System.out.println("### count rows: " + objectDAO.count());
}
ObjectDAO从GenericDAO扩展而来。GenericDAO看起来像:

private Class<T> entityClass;

public GenericDAO(Class<T> entityClass) {
    this.entityClass = entityClass;
}

protected abstract EntityManager getEntityManager();

public void create(T entity) {
    getEntityManager().persist(entity);
}

public void edit(T entity) {
    getEntityManager().merge(entity);
}

public int count() {
    javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
    javax.persistence.criteria.Root<T> rt = cq.from(entityClass);
    cq.select(getEntityManager().getCriteriaBuilder().count(rt));
    javax.persistence.Query q = getEntityManager().createQuery(cq);
    return ((Long) q.getSingleResult()).intValue();
}

public List<T> findAll() {
        javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
        cq.select(cq.from(entityClass));
        return getEntityManager().createQuery(cq).getResultList();
}
pgAdmin3还显示4182行。如果我在控制台中使用SQL语句计算行数,我也会得到数字4182,但我不会在列表中得到所有4182元素。无论我使用edit()还是create()

我使用:

玻璃鱼:3.1.2.2

JPA提供商:EclipseLink 2.5,JPA 2.1

PostgreSQL 9.1

JDK1.7


这是怎么回事?

问题在于我的映射中的FetchType:

@JoinFetch(value = JoinFetchType.INNER)
我希望该值不能为null/0,因此FetchType.OUTER解决了此问题:

@JoinFetch(value = JoinFetchType.OUTER)
这是什么意思,但我没有得到所有4182元素在一个列表中?
@JoinFetch(value = JoinFetchType.OUTER)