Я не могу отключить кеширование в OpenJPA 2.0.1.Как отключить кеширование в OpenJPA 2.0.1 (изменить: проблемы с BoneCP)
Я установил следующие свойства в моем persistence.xml:
<property name="openjpa.DataCache" value="false"/>
<property name="openjpa.QueryCache" value="false"/>
<property name="openjpa.jdbc.QuerySQLCache" value="false"/> <!-- I don't believe this is necessary -->
И я вижу, что правильные значения этих свойств регистрируется, когда я начинаю мое приложение.
Я создал базовую сущность для проверки этого с помощью основного метода, который просто запрашивает таблицу каждую секунду. Я создаю новый EntityManager на каждой итерации. Когда я запускаю это против пустой таблицы TEST, а затем впоследствии вручную вставить данные в тесте:
insert into TEST values (1,'a');
он никогда не поднимает на новых данных (хотя, если я повторно запустить программу она делает).
import java.util.List;
import javax.persistence.*;
@Entity
@Access(AccessType.PROPERTY)
@Table(name="TEST")
public class Test {
private int id;
private String name;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="ID")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name="NAME")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// SIMPLE TEST CASE
public static void main(String[] args) throws Exception {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("su3", null);
while(true) {
EntityManager em = factory.createEntityManager();
TypedQuery<Test> q = em.createQuery("select t from Test t", Test.class);
List<Test> res = q.getResultList();
for (Test t :res) {
System.out.println(t.getId()+", " + t.getName());
}
Thread.sleep(1000);
em.close();
}
}
}
что я делаю неправильно?
EDIT1: Если я создаю новый EntityManagerFactory внутри в то время цикла, он работает, но я понимаю, что, потому что я поставил DataCache и QueryCache ложь мне не нужно, чтобы сделать это, как и он это дорого стоило.
EDIT2: Я использовал BoneCP в качестве менеджера пула соединений, когда я вернулся к использованию DHCP или C3P0, проблема уходит. Не знаю, почему, хотя ...
EDIT3: Это конфиг я использую для BoneCP:
<property name="openjpa.ConnectionDriverName" value="com.jolbox.bonecp.BoneCPDataSource"/>
<property name="openjpa.ConnectionProperties" value="DriverClassName=com.mysql.jdbc.Driver,jdbcUrl=jdbc:mysql://localhost:3306/mydb,Username=xxxx,Password=yyyy,partitionCount=3"/>
Добавление переменной partitionCount = 3 и т. Д. В строку подключения не имеет смысла. Эта строка анализируется драйвером, а не пулом. – wwadge
Вы пришли, чтобы решить эту проблему? Я столкнулся с той же проблемой :( – pgsandstrom
@sandis см. Мой ответ – Joel