我有时会有一个非常奇怪的问题,如果我用jpa加载数据,即使数据库中有值,一些eneties也有空值。数据不是新创建的,也不是发生在每个记录上。唯一设置的值是主键
我在调查的时候找不到类似的东西
AbstractFacade.java文件
import java.util.List;
import javax.persistence.EntityManager;
public abstract class AbstractFacade<T> {
private Class<T> entityClass;
public AbstractFacade(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 void remove(T entity) {
getEntityManager().remove(getEntityManager().merge(entity));
}
public void detach(T entity) {
getEntityManager().detach(entity);
}
public T find(Object id) {
return getEntityManager().find(entityClass, id);
}
public List<T> findAll() {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
return getEntityManager().createQuery(cq).getResultList();
}
}
项目外观.java
import ch.itwork.map.core.util.AbstractFacade;
import javax.ejb.Stateless;
import javax.persistence.Cache;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless
public class ItemFacade extends AbstractFacade<Item> {
@PersistenceContext(unitName = "...")
private EntityManager em;
@Override
protected EntityManager getEntityManager() {
em.clear();
Cache cache = em.getEntityManagerFactory().getCache();
cache.evict(Item.class);
return em;
}
public void clearCache() {
em.clear();
Cache cache = em.getEntityManagerFactory().getCache();
cache.evict(Item.class);
}
public ItemFacade() {
super(Item.class);
}
}
这是导致问题的原因。
getItemFacade().findAll();
暂无答案!
目前还没有任何答案,快来回答吧!