FlushModeType.html<http://**********do**cs.oracle.com/javaee/*
*6/*** <http://cs.oracle.com/javaee/6/***>
***
<http://cs.oracle.com/javaee/**6/****<http://cs.oracle.com/javaee/6/****>
api/**
<http://cs.oracle.com/javaee/****6/**api/**<http://cs.oracle.com/javaee/**6/**api/**>
<http://cs.oracle.**com/javaee/6/**api/**<http://cs.oracle.com/javaee/6/**api/**>
<
http://cs.oracle.com/**javaee/****6/api/**<http://cs.oracle.com/**javaee/**6/api/**>
<http://cs.oracle.**com/**javaee/6/api/**<http://cs.oracle.com/**javaee/6/api/**>
<http://cs.oracle.com/****javaee/6/api/**<http://cs.oracle.com/**javaee/6/api/**>
<http://cs.**oracle.com/javaee/6/api/**<http://cs.oracle.com/javaee/6/api/**>
<http://docs.oracle.com/********javaee/6/api/**<http://docs.oracle.com/******javaee/6/api/**>
<http://docs.**oracle.com/****javaee/6/api/**<http://docs.oracle.com/****javaee/6/api/**>
**>
<http://docs.**oracle.com/****javaee/6/api/**<http://oracle.com/**javaee/6/api/**>
<http://docs.**oracle.com/**javaee/6/api/**<http://docs.oracle.com/**javaee/6/api/**>
<http://docs.**oracle.com/****javaee/6/api/**<http://oracle.com/**javaee/6/api/**>
<http://oracle.**com/javaee/6/api/**<http://oracle.com/javaee/6/api/**>
<http://docs.**oracle.com/**javaee/6/api/**<http://oracle.com/javaee/6/api/**>
<http://docs.**oracle.com/javaee/6/api/**<http://docs.oracle.com/javaee/6/api/**>
javax/persistence/************FlushModeType.html<http://**
docs.oracle.com/javaee/6/api/**********javax/persistence/****<http://docs.oracle.com/javaee/6/api/********javax/persistence/****>
<**http://docs.oracle.com/javaee/**
6/api/******javax/persistence/******<http://docs.oracle.com/javaee/6/api/******javax/persistence/****>
<ht**tp://docs.oracle.com/**javaee/6/**<http://docs.oracle.com/javaee/6/**>
api/****javax/persistence/******<http://docs.oracle.com/**
javaee/6/api/****javax/**persistence/****<http://docs.oracle.com/javaee/6/api/****javax/persistence/****>
**>
FlushModeType.html<http://****do**cs.oracle.com/javaee/6/**
api/*** <http://cs.oracle.com/javaee/6/api/***><
http://docs.oracle.**com/javaee/6/api/***<http://docs.oracle.com/javaee/6/api/***>
*javax/persistence/********FlushModeType.html<http://**
docs.oracle.com/javaee/6/api/******javax/persistence/****<http://docs.oracle.com/javaee/6/api/****javax/persistence/****>
FlushModeType.html<http://**docs.oracle.com/javaee/6/api/***
*javax/persistence/****FlushModeType.html<http://docs.oracle.com/javaee/6/api/**javax/persistence/**FlushModeType.html>
<http://**docs.oracle.com/******javaee/6/api/**javax/****<http://docs.oracle.com/****javaee/6/api/**javax/****>
persistence/**<http://docs.**oracle.com/**javaee/6/api/****
javax/**persistence/**<http://docs.oracle.com/**javaee/6/api/**javax/**persistence/**>
<http://docs.**oracle.com/**javaee/6/api/****javax/**
persistence/**<http://oracle.com/javaee/6/api/****javax/persistence/**>
<http://docs.**oracle.com/javaee/6/api/****
javax/persistence/**<http://docs.oracle.com/javaee/6/api/**javax/persistence/**>
FlushModeType.html<http://****do**cs.oracle.com/javaee/6/**
api/** <http://cs.oracle.com/javaee/6/api/**><
http://docs.oracle.com/**javaee/6/api/**<http://docs.oracle.com/javaee/6/api/**>
javax/persistence/******FlushModeType.html<http://**
docs.oracle.com/javaee/6/api/****javax/persistence/**<http://docs.oracle.com/javaee/6/api/**javax/persistence/**>
FlushModeType.html<http://**docs.oracle.com/javaee/6/api/**
javax/persistence/**FlushModeType.html<http://docs.oracle.com/javaee/6/api/javax/persistence/FlushModeType.html>
says
"If |FlushModeType.COMMIT| is set, the effect of
updates made
to
entities in the persistence context upon queries is
unspecified",
which
is
different from the definition of COMMIT below (where it
*only*
occurs
at
a
transaction commit.) If I understand that correctly, that
would
mean
Roller can't rely on a flush having occurred or not with
COMMIT,
and
EclipseLink and any other JPA implementation is welcome
to go
either
way,
and can indeed behave differently between named and dynamic
queries,
as
EclipseLink does.
Might the problem be with our code? We're relying on
unspecified
functionality when we set FlushModeType to COMMIT, and
we've
been
lucky
so
far that OpenJPA and Hibernate just so happen to flush
data (as
it's
allowed to do per the spec) while EclipseLink is
choosing not
to.
I
wonder
if we should have new versions of NamedQuery and
DynamicQuery
that
*don't*
set it to COMMIT (assuming the default of AUTO is being
used
otherwise,
as
specified here: http://www.eclipse.org/****
eclipselink/documentation/2.5/**************<http://www.**
eclipse. <http://www.eclipse.>**
**
org/******
<http://www.eclipse.org/**********<http://www.eclipse.org/********>
<http://www.eclipse.
**
org/**** <http://www.eclipse.org/****>>
eclipselink/documentation/2.5/************<http://www.eclipse.
****
org/** <http://www.eclipse.org/**>
**** <http://www.eclipse.org/****>
eclipselink/documentation/2.5/**********<http://www.eclipse.**
org/** <http://www.eclipse.org/**>
**** <http://www.eclipse.org/****>
eclipselink/documentation/2.5/********<http://www.eclipse.org/
****** <http://www.eclipse.org/****>
eclipselink/documentation/2.5/******<http://www.eclipse.org/**
**eclipselink/documentation/2.5/****<http://www.eclipse.org/**eclipselink/documentation/2.5/**>
jpa/extensions/p_persistence_**************context_flushmode.*
***
htm)-**
-*******
*something<
http://www.eclipse.**org/**********eclipselink/documentation/*
***
2.5/jpa/extensions/p_************persistence_context_**
flushmode.**
******
**htm)--something<http://www.**********eclipse.org/**
eclipselink/*** <http://eclipse.org/eclipselink/***>
*
<http://eclipse.org/**eclipselink/**<http://eclipse.org/eclipselink/**>
documentation/2.5/jpa/**********extensions/p_persistence_**
context_flushmode.htm)--**********something<http://www.**
eclipse. <http://www.eclipse.>***
***
org/eclipselink/documentation/********2.5/jpa/extensions/p_**
persistence_context_flushmode.********htm)--something<http://*
***
www. <http://www.>**
eclipse.org/eclipselink/******documentation/2.5/jpa/**<http://eclipse.org/eclipselink/****documentation/2.5/jpa/**>
<http:**//eclipse.org/eclipselink/****documentation/2.5/jpa/**<http://eclipse.org/eclipselink/**documentation/2.5/jpa/**>
extensions/p_persistence_******context_flushmode.htm)--****
something<http://www.eclipse.****org/eclipselink/**
documentation/**
2.5/jpa/extensions/p_****persistence_context_flushmode.****
htm)--something<http://www.**eclipse.org/eclipselink/**
documentation/2.5/jpa/**extensions/p_persistence_**
context_flushmode.htm)--**something<http://www.eclipse.org/eclipselink/documentation/2.5/jpa/extensions/p_persistence_context_flushmode.htm)--something>
that
the Media File stuff could apparently use here.
Glen
On 07/29/2013 08:32 AM, Greg Huber wrote:
Glen,
I think its only on the named queries as if I delete a
weblog
entry
it
updates correctly, and uses a dynamic query.
EntityManager em = getEntityManager(false);
Query q = em.createNamedQuery(queryName)**************;
// Never flush for queries. Roller code assumes this
behavior
q.setFlushMode(FlushModeType.**************COMMIT);
return q;
EntityManager em = getEntityManager(false);
Query q = em.createQuery(queryString);
// Never flush for queries. Roller code
assumes this
behavior
q.setFlushMode(FlushModeType.**************COMMIT);
Cheers Greg
On 29 July 2013 13:14, Glen Mazza <glen.ma...@gmail.com>
wrote:
OK, we can switch to Hibernate for the time
being, and
it
works
fine
there, it's as simple a matter as commenting-out the
EclipseLink
dependency
and uncommenting the Hibernate one in the app/pom.xml
and
doing
an
mvn
clean install to get a new WAR. Still, I'd like to fix
this
EclipseLink
issue, maybe there's some simple setting causing it
not to
work.
Note
our
EclipseLink is JPA 2.1 vs. Hibernate's (and the
OpenJPA's)
2.0,
that
might
be part of the story.
Glen
On 07/29/2013 07:34 AM, Greg Huber wrote:
From google:
"By default, the database flush mode is set to
AUTO.
This
means
that
the
Entity-Manager performs a flush operation
automatically as
needed.
In
general, this occurs at the end of a transaction for
transaction-scoped
EntityManagers and when the persistence context is
closed
for
application-managed or extendedscope EntityManagers. In
addition,
if
entities with pending changes are used in a query, the
persistence
provider
will flush changes to the database before executing the
query.If
the
flush
mode is set to COMMIT, the persistence provider will
only
synchronize
with
the database when the transaction commits.However, you
should
be
careful
with this, as it will be your responsibility to
synchronize
entity
state
with the database before executing a query. If you
don’t do
this
and
an
EntityManager<http://docs.**************or**
acle.com/javaee/6/*** <http://acle.com/javaee/6/*>
*api/*
<http://acle.com/javaee/6/api/***<http://acle.com/javaee/6/api/*>
*****
<http://acle.com/javaee/6/api/********<http://acle.com/javaee/6/api/******>
<http://acle.com/javaee/**6/api/****<http://acle.com/javaee/6/api/****>
**
<http://acle.com/javaee/6/api/**********<http://acle.com/javaee/6/api/********>
<http://acle.com/**javaee/6/api/******<http://acle.com/javaee/6/api/******>
<http://acle.com/javaee/**6/**api/****<http://acle.com/javaee/**6/api/****>
<http://acle.com/**javaee/6/api/****<http://acle.com/javaee/6/api/****>
javax/**
<http://acle.com/javaee/6/api/**********javax/**<http://acle.com/javaee/6/api/********javax/**>
<http://acle.**com/javaee/6/api/******javax/****<http://acle.com/javaee/6/api/******javax/**>
<http://acle.**com/javaee/6/**api/****javax/**<http://acle.
**com/javaee/6/api/****javax/**<http://acle.com/javaee/6/api/****javax/**>
<http://acle.com/**javaee/6/****api/**javax/**<http://acle.com/**javaee/6/**api/**javax/**>
<http://acle.**com/**javaee/6/api/**javax/**<http://acle.com/**javaee/6/api/**javax/**>
<http://acle.**com/javaee/6/**api/**javax/**<http://acle.**
com/javaee/6/api/**javax/**<http://acle.com/javaee/6/api/**javax/**>
<http://acle.com/
**javaee/6/api/javax/**
<http://acle.com/javaee/6/api/**
**** <http://acle.com/javaee/6/api/****><
http://acle.com/javaee/6/**api/**<http://acle.com/javaee/6/api/**>
**javax/**
<http://acle.com/javaee/6/api/******javax/**<http://acle.com/javaee/6/api/****javax/**>
<http://acle.com/**javaee/6/api/**javax/**<http://acle.com/javaee/6/api/**javax/**>
<
http://acle.com/**javaee/6/****api/javax/**<http://acle.com/**javaee/6/**api/javax/**>
<http://acle.com/****javaee/6/api/javax/**<http://acle.com/**javaee/6/api/javax/**>
<http://acle.com/**javaee/6/**api/javax/**<http://acle.com/**javaee/6/api/javax/**>
<http://acle.com/**javaee/6/api/javax/**<http://acle.com/javaee/6/api/javax/**>
<http://oracle.com/**javaee/6/**********api/javax/**<http://oracle.com/**javaee/6/********api/javax/**>
<http://**oracle.com/**javaee/6/********api/javax/**<http://oracle.com/**javaee/6/******api/javax/**>
<http://**oracle.com/**javaee/**6/****api/**javax/**<http://oracle.com/**javaee/6/****api/**javax/**>
<http://**oracle.com/**javaee/6/****api/**javax/**<http://oracle.com/**javaee/6/****api/javax/**>
<http://**oracle.com/**javaee/****6/**api/**javax/**<http://oracle.com/**javaee/**6/**api/**javax/**>
<http://**oracle.com/**javaee/6/**api/****javax/**<http://oracle.com/**javaee/6/**api/**javax/**>
<http://**oracle.com/**javaee/**6/**api/**javax/**<http://oracle.com/**javaee/6/**api/**javax/**>
<http://**oracle.com/**javaee/6/**api/**javax/**<http://oracle.com/**javaee/6/**api/javax/**>
<http://oracle.**com/**javaee/******6/api/javax/**<http://
**
oracle. <http://oracle.>**
com/**javaee/6/api/javax/**<**ht**tp://oracle.com/**javaee/
**6/** <http://oracle.com/**javaee/6/**>
api/javax/**
<http://oracle.com/**javaee/6/**api/javax/**<http://oracle.com/**javaee/6/api/javax/**>
<http://oracle.**com/javaee/6/********api/javax/**<http://
**
oracle. <http://oracle.>**
**
com/javaee/6/api/javax/**<****http**://
oracle.com/javaee/6/**** <http://oracle.com/javaee/6/**>
api/**
<http://oracle.com/javaee/6/**api/**<http://oracle.com/javaee/6/api/**>
javax/**
<http://oracle.com/javaee/6/****api/javax/**<http://oracle.com/javaee/6/**api/javax/**>
<http://oracle.**com/javaee/6/api/javax/**<http://oracle.com/javaee/6/api/javax/**>
persistence/EntityManager.**************html<
http://docs.oracle.****
com/** <http://docs.oracle.com/**>
** <http://docs.oracle.com/**>
javaee/6/api/javax/*************
*persistence/EntityManager.******
****
**html<
http://docs.oracle.com/************javaee/6/api/javax/**<http://docs.oracle.com/**********javaee/6/api/javax/**>
<http:**//docs.oracle.com/**********javaee/6/api/javax/**<http://docs.oracle.com/********javaee/6/api/javax/**>
<http://**docs.oracle.com/********javaee/**6/api/javax/**<http://docs.oracle.com/******javaee/**6/api/javax/**>
<http**://docs.oracle.com/********javaee/6/api/javax/**<http://docs.oracle.com/******javaee/6/api/javax/**>
<http://**docs.oracle.com/********javaee/6/**api/javax/**<http://docs.oracle.com/******javaee/6/**api/javax/**>
<http**://docs.oracle.com/****javaee/**6/**api/javax/**<http://docs.oracle.com/****javaee/6/**api/javax/**>
<http:/**/docs.oracle.com/******javaee/6/**api/javax/**<http://docs.oracle.com/****javaee/6/**api/javax/**>
<http:/**/docs.oracle.com/****javaee/6/**api/javax/**<http://docs.oracle.com/****javaee/6/api/javax/**>
<http://**docs.oracle.com/********javaee/6/**api/javax/**<http://docs.oracle.com/******javaee/6/**api/javax/**>
<http**://docs.oracle.com/****javaee/**6/**api/javax/**<http://docs.oracle.com/****javaee/6/**api/javax/**>
<http:/**/docs.oracle.com/****javaee/6/****api/javax/**<http://docs.oracle.com/**javaee/6/****api/javax/**>
<http**://docs.oracle.com/**javaee/6/****api/javax/**<http://docs.oracle.com/**javaee/6/**api/javax/**>
<http:/**/docs.oracle.com/******javaee/6/**api/javax/**<http://docs.oracle.com/****javaee/6/**api/javax/**>
<http:/**/docs.oracle.com/**javaee/6/****api/javax/**<http://docs.oracle.com/**javaee/6/**api/javax/**>
<http:/**/docs.oracle.com/****javaee/6/**api/javax/**<http://docs.oracle.com/**javaee/6/**api/javax/**>
<http:/**/docs.oracle.com/**javaee/6/**api/javax/**<http://docs.oracle.com/**javaee/6/api/javax/**>
persistence/EntityManager.**********html<
http://docs.oracle.com/**** <http://docs.oracle.com/**>
javaee/6/api/javax/**********persistence/EntityManager.****
****
html<
http://docs.oracle.com/********javaee/6/api/javax/**<http://docs.oracle.com/******javaee/6/api/javax/**>
<http://**docs.oracle.com/****javaee/6/**api/javax/**<http://docs.oracle.com/****javaee/6/api/javax/**>
<http://**docs.oracle.com/****javaee/6/**api/javax/**<http://docs.oracle.com/**javaee/6/**api/javax/**>
<http:/**/docs.oracle.com/**javaee/6/**api/javax/**<http://docs.oracle.com/**javaee/6/api/javax/**>
persistence/EntityManager.******html<
http://docs.oracle.com/**
javaee/6/api/javax/******persistence/EntityManager.****
html<
http://docs.oracle.com/****javaee/6/api/javax/**<http://docs.oracle.com/**javaee/6/api/javax/**>
persistence/EntityManager.**html<http://docs.oracle.com/**
javaee/6/api/javax/**persistence/EntityManager.html<http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html>
**>
**>
**>
**>
**>
**>
**>
**>query
returns stale entities from the database, the
application
can
wind
up
in an inconsistent state."
Did try to change it to auto but made no difference.
On 29 July 2013 12:25, Glen Mazza <glen.ma...@gmail.com>
wrote:
OK, I'll check, but what happens if you go
to the
Roller
maintenance
tab
and click on "Flush blog" (that will normally
empty
out
the
cache) --
problem solved then?
Note I had to bring back your changes after the
move to
fewer
modules,
I
might have missed something.
Glen
On 07/29/2013 07:20 AM, Greg Huber wrote:
Glen,
Can you test whether you can delete a media file
folder?
ie
add
a
folder
and then try and delete it. For me it seems to
delete
it OK
but
when
you
refresh the media file folder view it is still
there. If
I
then
shut
down
tomcat and restart it is gone. It seems something
to do
with
its
cache?
checking:
public Query getNamedQuery(String queryName)
....
q.setFlushMode(FlushModeType.*****
*************COMMIT);
it sets the query to flush on commit, which should in
theory
flush
the
query cache when the transaction is committed.
Is there some callback method we need to call to
get it to
flush?
Cheers Greg