Я получаю старые данные с JPA, даже если отключаю кэш. Я предполагаю, что это потому, что ресурс настроен как RESOURCE_LOCAL, но я не уверен.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="AppPU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.myentities.User</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://127.0.0.1:3306/mydatabase"/>
<property name="javax.persistence.jdbc.password" value="*****"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="user1"/>
<property name="eclipselink.logging.level" value="FINEST"/>
</properties>
</persistence-unit>
</persistence>
Мой код, который получает старую информацию о пользователе:
public List<User> findAll(App app) {
getEntityManager().getTransaction().begin();
Query q = getEntityManager().createQuery("SELECT t1 FROM User t1 WHERE t1.app.idApp=:idApp");
q.setParameter("idApp", app.getIdApp());
getEntityManager().flush();
getEntityManager().getTransaction().commit();
List resultList = q.getResultList();
return resultList;
}
Моя сущность:
@Entity
@Table(name = "user")
@Cache (
type=CacheType.NONE
)
public class User implements Serializable {
// some attributtes
}
У кого-нибудь есть идеи, что происходит?
Методы begin, flush и commit были просто актами отчаяния! Я знаю, что это не нужно.
Я забыл сказать кое-что важное: тест, который я делаю - это добавление записи пользователя прямо на консоли базы данных и затем попытка увидеть его через мой webapp, который не показывает нового пользователя. Это и есть "старые данные", о которых я говорил, он отображает только "старых пользователей".
Я уже пытался поместить это в persistence.xml и не увидел никакой разницы в результатах:
<property name="eclipselink.cache.shared.default" value="false"/>
<property name="eclipselink.cache.size.default" value="0"/>
<property name="eclipselink.cache.type.default" value="None"/>
Так же как и что-то другое...