You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@isis.apache.org by Serdar Hamzaogullari <ha...@foreks.com> on 2018/01/02 08:58:40 UTC

Re: Menu getAll action returns table with many sql queries for each entry

Hi Dan,

Does this commit also resolves pagination issue ?

On Sun, Dec 31, 2017 at 8:07 PM, Dan Haywood <da...@haywood-associates.co.uk>
wrote:

> Hi Serdar,
>
> I've done a first-cut implementation of a solution for this, for 1.16.0.
> It's disabled by default, and there is room for improvement, but it's
> definitely a step in the right direction.
>
> Details on ISIS-1774 ticket
>
> Thx
> Dan
>
>
> On Tue, 21 Nov 2017 at 17:08 Dan Haywood <da...@haywood-associates.co.uk>
> wrote:
>
> >
> > Yes, there's a ticket [1].
> >
> > With respect to a query returning a million times etc., I take the view
> > that this would be a modelling error... No user wants to browse over so
> > many rows. I think the framework should, therefore, automatically limit
> the
> > number of rows, eg to 1000 (configurable).
> >
> > I'll look to do that in the same ticket.
> >
> > Thx,
> > Dan.
> >
> >
> >
> > [1] https://issues.apache.org/jira/browse/ISIS-1774
> >
> >
> > On Fri, 17 Nov 2017 at 10:46 Serdar Hamzaogullari <
> hasan.serdar@foreks.com>
> > wrote:
> >
> >> Hi Dan,
> >>
> >> Let me remind you that also: at the first table render still we have a
> >> Select all sql query right ? Think we have one million record on table.
> >> Select all and buffer these objects at memory can cause an out of
> memory.
> >> At the first table render before pagination you can apply the pagination
> >> first page operation so that we never have a select all query.
> >>
> >> Did you create a ticket for this pagination issue ? How can I follow ?
> Can
> >> I contribute ? I did not go inside the isis codes before. Maybe you can
> >> point me to the related codes.
> >>
> >> On Fri, Nov 17, 2017 at 1:03 PM, Dan Haywood <
> >> dan@haywood-associates.co.uk>
> >> wrote:
> >>
> >> > Hi Serdar,
> >> > Yeah, saw your email, been mulling on the best solution for this.
> >> >
> >> > The issue is that behind the scenes Isis creates a serializable
> (wicket)
> >> > model which is the identity (oid) of each object to be rendered.  When
> >> the
> >> > user navigates to the second page, we just render the next set of
> >> objects
> >> > from this list, rehyrdating each from the serialized oid one by one.
> >> >
> >> > I can think of two possible improvements.
> >> >
> >> > The first, probably easier, would be to keep the same general
> >> architecture,
> >> > but to optimize things so that the framework does a single bulk
> request
> >> of
> >> > all object to be rendered.  I would imagine that would result in a
> >> single
> >> > SELECT FROM WHERE id in (x, y, z, a, b, ...) .  That's fine for a
> >> small-ish
> >> > number of objects (for example, SQL Server and Sybase have an upper
> >> limit
> >> > of ~1000 before they table scan).
> >> >
> >> > The second idea I have would be to change the architecture such that
> on
> >> > pagination we resubmit the original query, but then keep track of
> where
> >> > we're up to, eg instances 16~30 or 31~45 etc.  I think that would be
> >> more
> >> > work because the table being rendered would need to keep a memento of
> >> that
> >> > query, as well as which page we're on.
> >> >
> >> > I'll have a go at implementing the first idea as a first pass;
> hopefully
> >> > will be quite easy.
> >> >
> >> > Thx
> >> > Dan
> >> >
> >> > On Fri, 17 Nov 2017 at 09:15 Serdar Hamzaogullari <
> >> hasan.serdar@foreks.com
> >> > >
> >> > wrote:
> >> >
> >> > > Hello Dan,
> >> > >
> >> > > Maybe you missed my email. Did you investigate the pagination
> >> performance
> >> > > problem that I indicated in my previous email ?
> >> > >
> >> > > On Mon, Nov 13, 2017 at 11:50 AM, Serdar Hamzaogullari <
> >> > > hasan.serdar@foreks.com> wrote:
> >> > >
> >> > > > Hi Dan,
> >> > > >
> >> > > > Thanks for the solution. I tried it and it works fine for get all
> >> menu
> >> > > > action however if I click to any page in the pagination list I see
> >> the
> >> > > sql
> >> > > > queries for all entries again.
> >> > > >
> >> > > > I think we need to solve the pagination performance problem.
> >> > > >
> >> > > > On Sun, Nov 12, 2017 at 7:57 PM, Dan Haywood <
> >> > > dan@haywood-associates.co.uk
> >> > > > > wrote:
> >> > > >
> >> > > >> Hi Serdar,
> >> > > >>
> >> > > >> I did.  And here's the thing ... the framework has always done
> this
> >> > (at
> >> > > >> least since 1.8.0, which was the first version I tested).  So, my
> >> > > >> apologies
> >> > > >> for indicating otherwise.
> >> > > >>
> >> > > >> Clearly we ought to do better here, and I do have a workaround
> >> which
> >> > you
> >> > > >> could try out.  In your application's DomainApplication (subclass
> >> of
> >> > > >> IsisWicketApplication), add the following to the end of the
> init()
> >> > > method:
> >> > > >>
> >> > > >>
> >> > > >> getRequestCycleSettings().setRenderStrategy(RequestCycleSett
> >> > > >> ings.RenderStrategy.REDIRECT_TO_BUFFER);
> >> > > >>
> >> > > >> By default we use the REDIRECT_TO_RENDER strategy ... I dimly
> >> recall
> >> > my
> >> > > >> rationale as being that it's "safer"; this Wicket wiki page [1]
> >> > explains
> >> > > >> the difference.  However, this is what causes the 1+N loading
> that
> >> we
> >> > > see.
> >> > > >> A first Isis/DN session is used to select the objects, and
> mementos
> >> > for
> >> > > >> all
> >> > > >> retrieved objects are captured.  This first session is then
> closed.
> >> > On
> >> > > >> render, we then open a new Isis/DN session and use those mementos
> >> to
> >> > > >> retrieve all objects one by one.
> >> > > >>
> >> > > >> Using REDIRECT_TO_BUFFER means that all the work is done in a
> >> single
> >> > > >> session, avoiding the issue.
> >> > > >>
> >> > > >> My limited testing didn't throw up any adverse effects to
> >> switching to
> >> > > >> REDIRECT_TO_BUFFER, and I've raised a ticket [2] to explore
> >> changing
> >> > > this
> >> > > >> behaviour.
> >> > > >>
> >> > > >> Thanks for raising this, let me know how you get on.
> >> > > >>
> >> > > >> Cheers
> >> > > >> Dan
> >> > > >>
> >> > > >> [1]
> >> > > https://cwiki.apache.org/confluence/display/WICKET/
> Render+strategies
> >> > > >> [2] https://issues.apache.org/jira/browse/ISIS-1774
> >> > > >>
> >> > > >>
> >> > > >> On Sat, 11 Nov 2017 at 20:30 Serdar Hamzaogullari <
> >> > > >> hasan.serdar@foreks.com>
> >> > > >> wrote:
> >> > > >>
> >> > > >> > Hello Dan,
> >> > > >> >
> >> > > >> > Did you have a chance to take look at my github example app
> >> > > >> >
> >> > > >> > 9 Kas 2017 Per, saat 16:22 tarihinde Serdar Hamzaogullari <
> >> > > >> > hasan.serdar@foreks.com> şunu yazdı:
> >> > > >> >
> >> > > >> > > Hi Dan,
> >> > > >> > >
> >> > > >> > > Here is a complete example of the problem
> >> > > >> > >
> >> > > >> > > https://github.com/radresian/apache-isis-sample
> >> > > >> > >
> >> > > >> > > After running the application Click the ProfilePreferences
> >> Menu ->
> >> > > >> List
> >> > > >> > > All, then you will see the SQL queries for each entry at the
> >> > console
> >> > > >> > logs...
> >> > > >> > >
> >> > > >> > > On Thu, Nov 9, 2017 at 2:17 AM, Dan Haywood <
> >> > > >> > dan@haywood-associates.co.uk>
> >> > > >> > > wrote:
> >> > > >> > >
> >> > > >> > >> Hmm, looks ok.
> >> > > >> > >>
> >> > > >> > >> Can you upload an example app to github so I can pull it
> down
> >> and
> >> > > >> take a
> >> > > >> > >> closer look?
> >> > > >> > >>
> >> > > >> > >> Thx
> >> > > >> > >> Dan
> >> > > >> > >>
> >> > > >> > >> On Wed, 8 Nov 2017 at 23:12 Serdar Hamzaogullari <
> >> > > >> > hasan.serdar@foreks.com
> >> > > >> > >> >
> >> > > >> > >> wrote:
> >> > > >> > >>
> >> > > >> > >> > Hi Jörg,
> >> > > >> > >> >
> >> > > >> > >> > IdGeneratorStrategy.IDENTITY did not help. Same result.
> >> > > >> > >> >
> >> > > >> > >> > Hi Dan,
> >> > > >> > >> >
> >> > > >> > >> > Here is my repository:
> >> > > >> > >> >
> >> > > >> > >> >
> >> > > >> > >> > @DomainService(
> >> > > >> > >> >         nature = NatureOfService.DOMAIN,
> >> > > >> > >> >         repositoryFor = ProfilePreferences.class
> >> > > >> > >> > )
> >> > > >> > >> > public class ProfilePreferencesRepository {
> >> > > >> > >> >
> >> > > >> > >> >     public List<ProfilePreferences> listAll() {
> >> > > >> > >> >         return
> >> > > >> > repositoryService.allInstances(ProfilePreferences.class);
> >> > > >> > >> >     }
> >> > > >> > >> >
> >> > > >> > >> >     public ProfilePreferences get(final String name) {
> >> > > >> > >> >         return repositoryService.uniqueMatch(
> >> > > >> > >> >                 new QueryDefault<>(
> >> > > >> > >> >                         ProfilePreferences.class,
> >> > > >> > >> >                         "get",
> >> > > >> > >> >                         "name", name));
> >> > > >> > >> >     }
> >> > > >> > >> >
> >> > > >> > >> >     public ProfilePreferences create(final String name) {
> >> > > >> > >> >         final ProfilePreferences object = new
> >> > > >> > ProfilePreferences(name);
> >> > > >> > >> >         serviceRegistry.injectServicesInto(object);
> >> > > >> > >> >         repositoryService.persist(object);
> >> > > >> > >> >         return object;
> >> > > >> > >> >     }
> >> > > >> > >> >
> >> > > >> > >> >     @javax.inject.Inject
> >> > > >> > >> >     RepositoryService repositoryService;
> >> > > >> > >> >     @javax.inject.Inject
> >> > > >> > >> >     ServiceRegistry2 serviceRegistry;
> >> > > >> > >> > }
> >> > > >> > >> >
> >> > > >> > >> >
> >> > > >> > >> >
> >> > > >> > >> > On Wed, Nov 8, 2017 at 8:16 PM, Dan Haywood <
> >> > > >> > >> dan@haywood-associates.co.uk>
> >> > > >> > >> > wrote:
> >> > > >> > >> >
> >> > > >> > >> > > Hi Serdar,
> >> > > >> > >> > >
> >> > > >> > >> > > can you show us your repository implementation?
> >> > > >> > >> > >
> >> > > >> > >> > > I'm wondering why you have defined a query called
> "Get", I
> >> > > >> wonder if
> >> > > >> > >> it's
> >> > > >> > >> > > being used in that repo (I don't think it should be, if
> >> so)
> >> > > >> > >> > >
> >> > > >> > >> > > Ta
> >> > > >> > >> > > Dan
> >> > > >> > >> > >
> >> > > >> > >> > >
> >> > > >> > >> > > On Wed, 8 Nov 2017 at 17:09 Rade, Joerg / Kuehne +
> Nagel /
> >> > Ham
> >> > > >> > GI-DP <
> >> > > >> > >> > > Joerg.Rade@kuehne-nagel.com> wrote:
> >> > > >> > >> > >
> >> > > >> > >> > > > Hi Serdar,
> >> > > >> > >> > > >
> >> > > >> > >> > > > did you consider:
> >> > > >> > >> > > >
> >> > > >> > >> > > > @javax.jdo.annotations.DatastoreIdentity(
> >> > > >> > >> > > >         strategy =
> >> > > >> > >> javax.jdo.annotations.IdGeneratorStrategy.IDENTITY,
> >> > > >> > >> > > >         column = "id")
> >> > > >> > >> > > >
> >> > > >> > >> > > > instead of:
> >> > > >> > >> > > >
> >> > > >> > >> > > > @PrimaryKey?
> >> > > >> > >> > > >
> >> > > >> > >> > > > Best regards
> >> > > >> > >> > > > Jörg
> >> > > >> > >> > > >
> >> > > >> > >> > > > -----Ursprüngliche Nachricht-----
> >> > > >> > >> > > > Von: Serdar Hamzaogullari [mailto:
> >> hasan.serdar@foreks.com]
> >> > > >> > >> > > > Gesendet: Mittwoch, 8. November 2017 17:07
> >> > > >> > >> > > > An: users@isis.apache.org
> >> > > >> > >> > > > Betreff: Menu getAll action returns table with many
> sql
> >> > > queries
> >> > > >> > for
> >> > > >> > >> > each
> >> > > >> > >> > > > entry
> >> > > >> > >> > > >
> >> > > >> > >> > > > Hi,
> >> > > >> > >> > > >
> >> > > >> > >> > > > I have a menu action like this, listAll action:
> >> > > >> > >> > > >
> >> > > >> > >> > > >
> >> > > >> > >> > > > @DomainService(
> >> > > >> > >> > > >         nature = NatureOfService.VIEW_MENU_ONLY,
> >> > > >> > >> > > >         objectType = "profile-preferences-services",
> >> > > >> > >> > > >         repositoryFor = ProfilePreferences.class
> >> > > >> > >> > > > )
> >> > > >> > >> > > > @DomainServiceLayout(
> >> > > >> > >> > > >         named = "Profile Preferences",
> >> > > >> > >> > > >         menuOrder = "3"
> >> > > >> > >> > > > )
> >> > > >> > >> > > > public class ProfilePreferencesMenu {
> >> > > >> > >> > > >
> >> > > >> > >> > > >     @Action(semantics = SemanticsOf.SAFE)
> >> > > >> > >> > > >     @ActionLayout(bookmarking =
> BookmarkPolicy.AS_ROOT)
> >> > > >> > >> > > >     @MemberOrder(sequence = "1")
> >> > > >> > >> > > >     public List<ProfilePreferences> listAll() {
> >> > > >> > >> > > >         return profilePreferencesRepository.
> listAll();
> >> > > >> > >> > > >     }
> >> > > >> > >> > > > .
> >> > > >> > >> > > > .
> >> > > >> > >> > > > .
> >> > > >> > >> > > >
> >> > > >> > >> > > > My Entity is that:
> >> > > >> > >> > > >
> >> > > >> > >> > > >
> >> > > >> > >> > > > @javax.jdo.annotations.PersistenceCapable(
> >> > > >> > >> > > >         identityType=IdentityType.APPLICATION,
> >> > > >> > >> > > >         table="profile_preferences",
> >> > > >> > >> > > >         schema = "dbo"
> >> > > >> > >> > > > )
> >> > > >> > >> > > > @javax.jdo.annotations.Version(
> >> > > >> > >> > > >         strategy= VersionStrategy.VERSION_NUMBER,
> >> > > >> > >> > > >         column="version")
> >> > > >> > >> > > > @javax.jdo.annotations.Queries({
> >> > > >> > >> > > >         @javax.jdo.annotations.Query(
> >> > > >> > >> > > >                 name = "get",
> >> > > >> > >> > > >                 value = "SELECT "
> >> > > >> > >> > > >                         + "FROM
> >> > > >> > >> > > >
> >> > > com.foreks.user.settings.domain.preferences.ProfilePreferences
> >> > > >> "
> >> > > >> > >> > > >                         + "WHERE
> >> > profileName.equals(:name)")
> >> > > >> > >> > > > })
> >> > > >> > >> > > > @DomainObject(
> >> > > >> > >> > > >         objectType = "profile-preferences"
> >> > > >> > >> > > > )
> >> > > >> > >> > > > public class ProfilePreferences implements
> >> > > >> > >> > > Comparable<ProfilePreferences> {
> >> > > >> > >> > > >
> >> > > >> > >> > > >     public ProfilePreferences(final String
> profileName)
> >> {
> >> > > >> > >> > > >         setProfileName(profileName);
> >> > > >> > >> > > >     }
> >> > > >> > >> > > >
> >> > > >> > >> > > >     @javax.jdo.annotations.Column(allowsNull =
> "false",
> >> > > >> length=
> >> > > >> > 150)
> >> > > >> > >> > > >     @PrimaryKey
> >> > > >> > >> > > >     @Getter @Setter
> >> > > >> > >> > > >     @Title(prepend = "Profile Preferences: ")
> >> > > >> > >> > > >     private String profileName;
> >> > > >> > >> > > >
> >> > > >> > >> > > >     @javax.jdo.annotations.Column(allowsNull =
> "true",
> >> > length
> >> > > >> =
> >> > > >> > >> 4000)
> >> > > >> > >> > > >     @Property(editing = Editing.ENABLED,hidden =
> >> > > >> Where.ALL_TABLES)
> >> > > >> > >> > > >     @Getter @Setter
> >> > > >> > >> > > >     private String preferences;
> >> > > >> > >> > > >
> >> > > >> > >> > > >     //region > delete (action)
> >> > > >> > >> > > >     @Action(semantics = SemanticsOf.NON_IDEMPOTENT_ARE
> >> > > >> _YOU_SURE)
> >> > > >> > >> > > >     public void delete() {
> >> > > >> > >> > > >         final String title =
> titleService.titleOf(this);
> >> > > >> > >> > > >         messageService.informUser(String.format("'%s'
> >> > > >> deleted",
> >> > > >> > >> > title));
> >> > > >> > >> > > >         repositoryService.remove(this);
> >> > > >> > >> > > >     }
> >> > > >> > >> > > >     //endregion
> >> > > >> > >> > > >
> >> > > >> > >> > > >     //region > delete (action)
> >> > > >> > >> > > >     @Action(semantics = SemanticsOf.NON_IDEMPOTENT)
> >> > > >> > >> > > >     public ProfilePreferences
> >> > copy(@ParameterLayout(named="P
> >> > > >> rofile
> >> > > >> > >> > > Name")
> >> > > >> > >> > > > String name) {
> >> > > >> > >> > > >         final ProfilePreferences object = new
> >> > > >> > >> ProfilePreferences(name);
> >> > > >> > >> > > >         object.setPreferences(preferences);
> >> > > >> > >> > > >         repositoryService.persist(object);
> >> > > >> > >> > > >         return object;
> >> > > >> > >> > > >     }
> >> > > >> > >> > > >     //endregion
> >> > > >> > >> > > >
> >> > > >> > >> > > >     //region > toString, compareTo
> >> > > >> > >> > > >     @Override
> >> > > >> > >> > > >     public String toString() {
> >> > > >> > >> > > >         return ObjectContracts.toString(this,
> >> > "profileName");
> >> > > >> > >> > > >     }
> >> > > >> > >> > > >
> >> > > >> > >> > > >     @Override
> >> > > >> > >> > > >     public int compareTo(final ProfilePreferences
> >> other) {
> >> > > >> > >> > > >         return ObjectContracts.compare(this, other,
> >> > > >> > "profileName");
> >> > > >> > >> > > >     }
> >> > > >> > >> > > >     //endregion
> >> > > >> > >> > > >
> >> > > >> > >> > > >     //region > injected services
> >> > > >> > >> > > >     @javax.inject.Inject
> >> > > >> > >> > > >     RepositoryService repositoryService;
> >> > > >> > >> > > >
> >> > > >> > >> > > >     @javax.inject.Inject
> >> > > >> > >> > > >     TitleService titleService;
> >> > > >> > >> > > >
> >> > > >> > >> > > >     @javax.inject.Inject
> >> > > >> > >> > > >     MessageService messageService;
> >> > > >> > >> > > >     //endregion
> >> > > >> > >> > > >
> >> > > >> > >> > > > }
> >> > > >> > >> > > >
> >> > > >> > >> > > >
> >> > > >> > >> > > > When I click the List All action from the wicket
> viewer
> >> > menu,
> >> > > >> > server
> >> > > >> > >> > logs
> >> > > >> > >> > > > this SQL queries:
> >> > > >> > >> > > >
> >> > > >> > >> > > > 19:03:07,334  [Native
>  http-nio-8080-exec-4
> >> > > DEBUG]
> >> > > >> > >> SELECT
> >> > > >> > >> > > > 'com.foreks.user.settings.domain.preferences.
> >> > ProfilePreferen
> >> > > >> ces'
> >> > > >> > AS
> >> > > >> > >> > > > NUCLEUS_TYPE,A0.preferences,A0.profileName,A0.version
> >> FROM
> >> > > >> > >> > > > dbo.profile_preferences A0
> >> > > >> > >> > > > 19:03:07,436  [Native
>  http-nio-8080-exec-5
> >> > > DEBUG]
> >> > > >> > >> SELECT
> >> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences
> >> A0
> >> > > WHERE
> >> > > >> > >> > > > A0.profileName = <'ahl'>
> >> > > >> > >> > > > 19:03:07,442  [Native
>  http-nio-8080-exec-5
> >> > > DEBUG]
> >> > > >> > >> SELECT
> >> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences
> >> A0
> >> > > WHERE
> >> > > >> > >> > > > A0.profileName = <'akbank'>
> >> > > >> > >> > > > 19:03:07,448  [Native
>  http-nio-8080-exec-5
> >> > > DEBUG]
> >> > > >> > >> SELECT
> >> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences
> >> A0
> >> > > WHERE
> >> > > >> > >> > > > A0.profileName = <'bmd'>
> >> > > >> > >> > > > 19:03:07,454  [Native
>  http-nio-8080-exec-5
> >> > > DEBUG]
> >> > > >> > >> SELECT
> >> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences
> >> A0
> >> > > WHERE
> >> > > >> > >> > > > A0.profileName = <'DELTA'>
> >> > > >> > >> > > > 19:03:07,460  [Native
>  http-nio-8080-exec-5
> >> > > DEBUG]
> >> > > >> > >> SELECT
> >> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences
> >> A0
> >> > > WHERE
> >> > > >> > >> > > > A0.profileName = <'foreks'>
> >> > > >> > >> > > > 19:03:07,466  [Native
>  http-nio-8080-exec-5
> >> > > DEBUG]
> >> > > >> > >> SELECT
> >> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences
> >> A0
> >> > > WHERE
> >> > > >> > >> > > > A0.profileName = <'halky'>
> >> > > >> > >> > > > 19:03:07,472  [Native
>  http-nio-8080-exec-5
> >> > > DEBUG]
> >> > > >> > >> SELECT
> >> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences
> >> A0
> >> > > WHERE
> >> > > >> > >> > > > A0.profileName = <'hcbs'>
> >> > > >> > >> > > > 19:03:07,477  [Native
>  http-nio-8080-exec-5
> >> > > DEBUG]
> >> > > >> > >> SELECT
> >> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences
> >> A0
> >> > > WHERE
> >> > > >> > >> > > > A0.profileName = <'issanal'>
> >> > > >> > >> > > > 19:03:07,483  [Native
>  http-nio-8080-exec-5
> >> > > DEBUG]
> >> > > >> > >> SELECT
> >> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences
> >> A0
> >> > > WHERE
> >> > > >> > >> > > > A0.profileName = <'marbas'>
> >> > > >> > >> > > > 19:03:07,489  [Native
>  http-nio-8080-exec-5
> >> > > DEBUG]
> >> > > >> > >> SELECT
> >> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences
> >> A0
> >> > > WHERE
> >> > > >> > >> > > > A0.profileName = <'odeabank'>
> >> > > >> > >> > > > 19:03:07,495  [Native
>  http-nio-8080-exec-5
> >> > > DEBUG]
> >> > > >> > >> SELECT
> >> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences
> >> A0
> >> > > WHERE
> >> > > >> > >> > > > A0.profileName = <'odtu'>
> >> > > >> > >> > > > 19:03:07,500  [Native
>  http-nio-8080-exec-5
> >> > > DEBUG]
> >> > > >> > >> SELECT
> >> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences
> >> A0
> >> > > WHERE
> >> > > >> > >> > > > A0.profileName = <'osmanli'>
> >> > > >> > >> > > > 19:03:07,506  [Native
>  http-nio-8080-exec-5
> >> > > DEBUG]
> >> > > >> > >> SELECT
> >> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences
> >> A0
> >> > > WHERE
> >> > > >> > >> > > > A0.profileName = <'piramit'>
> >> > > >> > >> > > > 19:03:07,512  [Native
>  http-nio-8080-exec-5
> >> > > DEBUG]
> >> > > >> > >> SELECT
> >> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences
> >> A0
> >> > > WHERE
> >> > > >> > >> > > > A0.profileName = <'tebsanal'>
> >> > > >> > >> > > > 19:03:07,517  [Native
>  http-nio-8080-exec-5
> >> > > DEBUG]
> >> > > >> > >> SELECT
> >> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences
> >> A0
> >> > > WHERE
> >> > > >> > >> > > > A0.profileName = <'ZIRAAT'>
> >> > > >> > >> > > >
> >> > > >> > >> > > >
> >> > > >> > >> > > > There is a query for each entity.  The firs query
> >> > > >> > >> > > >
> >> > > >> > >> > > >  SELECT
> >> > > >> > >> > 'com.foreks.user.settings.domain.preferences.
> >> > ProfilePreferences'
> >> > > >> > >> > > > AS NUCLEUS_TYPE,A0.preferences,
> A0.profileName,A0.version
> >> > FROM
> >> > > >> > >> > > > dbo.profile_preferences A0
> >> > > >> > >> > > >
> >> > > >> > >> > > > should be enough. Query for every entity becomes a
> >> > > performance
> >> > > >> > >> problem.
> >> > > >> > >> > > > How can I prevent this behavior ? Is there some thing
> >> wrong
> >> > > or
> >> > > >> > >> missing
> >> > > >> > >> > in
> >> > > >> > >> > > > my Entity Class or Menu Action Class ?
> >> > > >> > >> > > >
> >> > > >> > >> > > > Help please :)
> >> > > >> > >> > > >
> >> > > >> > >> > > > --
> >> > > >> > >> > > >  <http://www.foreksmobile.com/redirect.html>
> >> > > >> > >> > > >
> >> > > >> > >> > > > P
> >> > > >> > >> > > >
> >> > > >> > >> > > > Bu mesaji yazdirmadan önce çevreye olan
> sorumlulugumuzu
> >> bir
> >> > > kez
> >> > > >> > daha
> >> > > >> > >> > > > düsünelim.
> >> > > >> > >> > > > Please consider the environment before printing this
> >> > e-mail.
> >> > > >> > >> > > >
> >> > > >> > >> > > > Bu elektronik posta ve onunla iletilen bütün dosyalar
> >> > sadece
> >> > > >> > >> > göndericisi
> >> > > >> > >> > > > tarafından alması amaçlanan yetkili gerçek ya da tüzel
> >> > > kişinin
> >> > > >> > >> > kullanımı
> >> > > >> > >> > > > içindir. Eğer söz konusu yetkili alıcı değilseniz bu
> >> > > elektronik
> >> > > >> > >> > postanın
> >> > > >> > >> > > > içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve
> >> > > >> kullanmanız
> >> > > >> > >> > > > kesinlikle yasaktır ve bu elektronik postayı derhal
> >> > silmeniz
> >> > > >> > >> > > gerekmektedir.
> >> > > >> > >> > > > FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya
> >> > eksiksiz
> >> > > >> > olduğu
> >> > > >> > >> > > > konusunda herhangi bir garanti vermemektedir. Bu
> >> nedenle bu
> >> > > >> > >> bilgilerin
> >> > > >> > >> > ne
> >> > > >> > >> > > > şekilde olursa olsun içeriğinden, iletilmesinden,
> >> > > alınmasından
> >> > > >> ve
> >> > > >> > >> > > > saklanmasından sorumlu değildir. Bu mesajdaki görüşler
> >> > > yalnızca
> >> > > >> > >> > gönderen
> >> > > >> > >> > > > kişiye aittir ve FOREKS'in görüşlerini
> yansıtmayabilir.
> >> > > >> > >> > > > Bu e-posta bilinen bütün bilgisayar virüslerine karşı
> >> > > >> taranmıştır.
> >> > > >> > >> > > > *
> >> > > >> > >> > > > This e-mail and any files transmitted with it are
> >> > > confidential
> >> > > >> and
> >> > > >> > >> > > > intended solely for the use of the individual or
> entity
> >> to
> >> > > whom
> >> > > >> > they
> >> > > >> > >> > are
> >> > > >> > >> > > > addressed.
> >> > > >> > >> > > > If you are not the intended recipient you are hereby
> >> > notified
> >> > > >> that
> >> > > >> > >> any
> >> > > >> > >> > > > dissemination, forwarding, copying or use of any of
> the
> >> > > >> > information
> >> > > >> > >> is
> >> > > >> > >> > > > strictly prohibited, and the e-mail should immediately
> >> be
> >> > > >> deleted.
> >> > > >> > >> > FOREKS
> >> > > >> > >> > > > makes no warranty as to the accuracy or completeness
> of
> >> any
> >> > > >> > >> information
> >> > > >> > >> > > > contained in this message and hereby excludes any
> >> liability
> >> > > of
> >> > > >> any
> >> > > >> > >> kind
> >> > > >> > >> > > for
> >> > > >> > >> > > > the information contained therein or for the
> information
> >> > > >> > >> transmission,
> >> > > >> > >> > > > reception, storage or use of such in any way
> whatsoever.
> >> > The
> >> > > >> > >> opinions
> >> > > >> > >> > > > expressed in this message belong to sender alone and
> may
> >> > not
> >> > > >> > >> > necessarily
> >> > > >> > >> > > > reflect the opinions of FOREKS.
> >> > > >> > >> > > > This e-mail has been scanned for all known computer
> >> > viruses.
> >> > > >> > >> > > >
> >> > > >> > >> > > > Kühne + Nagel (AG & Co.) KG
> >> > > >> > >> > > > Rechtsform: Kommanditgesellschaft, Bremen HRA 21928,
> >> > > >> USt-IdNr.: DE
> >> > > >> > >> > > > 812773878.
> >> > > >> > >> > > > Geschäftsleitung Kühne + Nagel (AG & Co.) KG: Dr.
> >> Hansjörg
> >> > > Rodi
> >> > > >> > >> (Vors.
> >> > > >> > >> > ),
> >> > > >> > >> > > > Martin Brinkmann, Holger Ketz, Jan-Hendrik
> Köstergarten,
> >> > > >> Nicholas
> >> > > >> > >> > Minde,
> >> > > >> > >> > > > Michael Nebel, Lars Wedel, Matthias Weiner.
> >> > > >> > >> > > > Persönlich haftende Gesellschafterin: Kühne & Nagel
> >> A.G.,
> >> > > >> > >> Rechtsform:
> >> > > >> > >> > > > Aktiengesellschaft nach luxemburgischem Recht,
> HR-Nr.: B
> >> > > 18745,
> >> > > >> > >> > > > Geschäftsführendes Verwaltungsratsmitglied: Karl
> >> Gernandt.
> >> > > >> > >> > > > Geschäftsleitung Region Zentral- und Osteuropa: Dr.
> >> > Hansjörg
> >> > > >> Rodi
> >> > > >> > >> > > (Vors.),
> >> > > >> > >> > > > Thierry Held, Uwe Hött, Richard Huhn, Holger Ketz,
> >> > > Jan-Hendrik
> >> > > >> > >> > > > Köstergarten, Jan Kunze, Michael Nebel, Guillaume
> >> Sauzedde,
> >> > > >> > Mustafa
> >> > > >> > >> > > Sener.
> >> > > >> > >> > > >
> >> > > >> > >> > > > Wir arbeiten ausschließlich auf Grundlage der
> >> Allgemeinen
> >> > > >> > Deutschen
> >> > > >> > >> > > > Spediteurbedingungen 2017 (ADSp 2017). Hinweis: Die
> ADSp
> >> > 2017
> >> > > >> > >> weichen
> >> > > >> > >> > in
> >> > > >> > >> > > > Ziffer 23 hinsichtlich des Haftungshöchstbetrages für
> >> > > >> Güterschäden
> >> > > >> > >> (§
> >> > > >> > >> > 431
> >> > > >> > >> > > > HGB) vom Gesetz ab, indem sie die Haftung bei
> >> multimodalen
> >> > > >> > >> Transporten
> >> > > >> > >> > > > unter Einschluss einer Seebeförderung und bei
> >> unbekanntem
> >> > > >> > Schadenort
> >> > > >> > >> > auf
> >> > > >> > >> > > 2
> >> > > >> > >> > > > SZR/kg und im Übrigen die Regelhaftung von 8,33 SZR/kg
> >> > > >> zusätzlich
> >> > > >> > >> auf
> >> > > >> > >> > > 1,25
> >> > > >> > >> > > > Millionen Euro je Schadenfall sowie 2,5 Millionen Euro
> >> je
> >> > > >> > >> > > Schadenereignis,
> >> > > >> > >> > > > mindestens aber 2 SZR/kg, beschränken. Die ADSp sind
> auf
> >> > > >> unserer
> >> > > >> > >> > Webseite
> >> > > >> > >> > > > als Download erhältlich. Auf Anfrage senden wir Ihnen
> >> diese
> >> > > >> auch
> >> > > >> > >> gerne
> >> > > >> > >> > > zu.
> >> > > >> > >> > > >
> >> > > >> > >> > >
> >> > > >> > >> >
> >> > > >> > >> > --
> >> > > >> > >> >  <http://www.foreksmobile.com/redirect.html>
> >> > > >> > >> >
> >> > > >> > >> > P
> >> > > >> > >> >
> >> > > >> > >> > Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu
> bir
> >> kez
> >> > > >> daha
> >> > > >> > >> > düsünelim.
> >> > > >> > >> > Please consider the environment before printing this
> e-mail.
> >> > > >> > >> >
> >> > > >> > >> > Bu elektronik posta ve onunla iletilen bütün dosyalar
> sadece
> >> > > >> > göndericisi
> >> > > >> > >> > tarafından alması amaçlanan yetkili gerçek ya da tüzel
> >> kişinin
> >> > > >> > kullanımı
> >> > > >> > >> > içindir. Eğer söz konusu yetkili alıcı değilseniz bu
> >> elektronik
> >> > > >> > postanın
> >> > > >> > >> > içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve
> >> > > kullanmanız
> >> > > >> > >> > kesinlikle yasaktır ve bu elektronik postayı derhal
> silmeniz
> >> > > >> > >> gerekmektedir.
> >> > > >> > >> > FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya
> >> eksiksiz
> >> > > >> olduğu
> >> > > >> > >> > konusunda herhangi bir garanti vermemektedir. Bu nedenle
> bu
> >> > > >> bilgilerin
> >> > > >> > >> ne
> >> > > >> > >> > şekilde olursa olsun içeriğinden, iletilmesinden,
> >> alınmasından
> >> > ve
> >> > > >> > >> > saklanmasından sorumlu değildir. Bu mesajdaki görüşler
> >> yalnızca
> >> > > >> > gönderen
> >> > > >> > >> > kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir.
> >> > > >> > >> > Bu e-posta bilinen bütün bilgisayar virüslerine karşı
> >> > > taranmıştır.
> >> > > >> > >> > *
> >> > > >> > >> > This e-mail and any files transmitted with it are
> >> confidential
> >> > > and
> >> > > >> > >> intended
> >> > > >> > >> > solely for the use of the individual or entity to whom
> they
> >> are
> >> > > >> > >> addressed.
> >> > > >> > >> > If you are not the intended recipient you are hereby
> >> notified
> >> > > that
> >> > > >> any
> >> > > >> > >> > dissemination, forwarding, copying or use of any of the
> >> > > >> information is
> >> > > >> > >> > strictly prohibited, and the e-mail should immediately be
> >> > > deleted.
> >> > > >> > >> FOREKS
> >> > > >> > >> > makes
> >> > > >> > >> > no warranty as to the accuracy or completeness of any
> >> > information
> >> > > >> > >> contained
> >> > > >> > >> > in this message and hereby excludes any liability of any
> >> kind
> >> > for
> >> > > >> the
> >> > > >> > >> > information contained therein or for the information
> >> > > transmission,
> >> > > >> > >> > reception, storage or use of such in any way whatsoever.
> The
> >> > > >> opinions
> >> > > >> > >> > expressed in this message belong to sender alone and may
> not
> >> > > >> > necessarily
> >> > > >> > >> > reflect the opinions of FOREKS.
> >> > > >> > >> > This e-mail has been scanned for all known computer
> viruses.
> >> > > >> > >> >
> >> > > >> > >>
> >> > > >> > >
> >> > > >> > >
> >> > > >> >
> >> > > >> > --
> >> > > >> >  <http://www.foreksmobile.com/redirect.html>
> >> > > >> >
> >> > > >> > P
> >> > > >> >
> >> > > >> > Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu bir kez
> >> daha
> >> > > >> > düsünelim.
> >> > > >> > Please consider the environment before printing this e-mail.
> >> > > >> >
> >> > > >> > Bu elektronik posta ve onunla iletilen bütün dosyalar sadece
> >> > > göndericisi
> >> > > >> > tarafından alması amaçlanan yetkili gerçek ya da tüzel kişinin
> >> > > kullanımı
> >> > > >> > içindir. Eğer söz konusu yetkili alıcı değilseniz bu elektronik
> >> > > postanın
> >> > > >> > içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve
> >> kullanmanız
> >> > > >> > kesinlikle yasaktır ve bu elektronik postayı derhal silmeniz
> >> > > >> gerekmektedir.
> >> > > >> > FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya eksiksiz
> >> olduğu
> >> > > >> > konusunda herhangi bir garanti vermemektedir. Bu nedenle bu
> >> > bilgilerin
> >> > > >> ne
> >> > > >> > şekilde olursa olsun içeriğinden, iletilmesinden, alınmasından
> ve
> >> > > >> > saklanmasından sorumlu değildir. Bu mesajdaki görüşler yalnızca
> >> > > gönderen
> >> > > >> > kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir.
> >> > > >> > Bu e-posta bilinen bütün bilgisayar virüslerine karşı
> >> taranmıştır.
> >> > > >> > *
> >> > > >> > This e-mail and any files transmitted with it are confidential
> >> and
> >> > > >> intended
> >> > > >> > solely for the use of the individual or entity to whom they are
> >> > > >> addressed.
> >> > > >> > If you are not the intended recipient you are hereby notified
> >> that
> >> > any
> >> > > >> > dissemination, forwarding, copying or use of any of the
> >> information
> >> > is
> >> > > >> > strictly prohibited, and the e-mail should immediately be
> >> deleted.
> >> > > >> FOREKS
> >> > > >> > makes
> >> > > >> > no warranty as to the accuracy or completeness of any
> information
> >> > > >> contained
> >> > > >> > in this message and hereby excludes any liability of any kind
> for
> >> > the
> >> > > >> > information contained therein or for the information
> >> transmission,
> >> > > >> > reception, storage or use of such in any way whatsoever. The
> >> > opinions
> >> > > >> > expressed in this message belong to sender alone and may not
> >> > > necessarily
> >> > > >> > reflect the opinions of FOREKS.
> >> > > >> > This e-mail has been scanned for all known computer viruses.
> >> > > >> >
> >> > > >>
> >> > > >
> >> > > >
> >> > >
> >> > > --
> >> > >  <http://www.foreksmobile.com/redirect.html>
> >> > >
> >> > > P
> >> > >
> >> > > Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu bir kez daha
> >> > > düsünelim.
> >> > > Please consider the environment before printing this e-mail.
> >> > >
> >> > > Bu elektronik posta ve onunla iletilen bütün dosyalar sadece
> >> göndericisi
> >> > > tarafından alması amaçlanan yetkili gerçek ya da tüzel kişinin
> >> kullanımı
> >> > > içindir. Eğer söz konusu yetkili alıcı değilseniz bu elektronik
> >> postanın
> >> > > içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve kullanmanız
> >> > > kesinlikle yasaktır ve bu elektronik postayı derhal silmeniz
> >> > gerekmektedir.
> >> > > FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya eksiksiz olduğu
> >> > > konusunda herhangi bir garanti vermemektedir. Bu nedenle bu
> >> bilgilerin ne
> >> > > şekilde olursa olsun içeriğinden, iletilmesinden, alınmasından ve
> >> > > saklanmasından sorumlu değildir. Bu mesajdaki görüşler yalnızca
> >> gönderen
> >> > > kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir.
> >> > > Bu e-posta bilinen bütün bilgisayar virüslerine karşı taranmıştır.
> >> > > *
> >> > > This e-mail and any files transmitted with it are confidential and
> >> > intended
> >> > > solely for the use of the individual or entity to whom they are
> >> > addressed.
> >> > > If you are not the intended recipient you are hereby notified that
> any
> >> > > dissemination, forwarding, copying or use of any of the information
> is
> >> > > strictly prohibited, and the e-mail should immediately be deleted.
> >> FOREKS
> >> > > makes
> >> > > no warranty as to the accuracy or completeness of any information
> >> > contained
> >> > > in this message and hereby excludes any liability of any kind for
> the
> >> > > information contained therein or for the information transmission,
> >> > > reception, storage or use of such in any way whatsoever. The
> opinions
> >> > > expressed in this message belong to sender alone and may not
> >> necessarily
> >> > > reflect the opinions of FOREKS.
> >> > > This e-mail has been scanned for all known computer viruses.
> >> > >
> >> >
> >>
> >> --
> >>  <http://www.foreksmobile.com/redirect.html>
> >>
> >> P
> >>
> >> Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu bir kez daha
> >> düsünelim.
> >> Please consider the environment before printing this e-mail.
> >>
> >> Bu elektronik posta ve onunla iletilen bütün dosyalar sadece göndericisi
> >> tarafından alması amaçlanan yetkili gerçek ya da tüzel kişinin kullanımı
> >> içindir. Eğer söz konusu yetkili alıcı değilseniz bu elektronik postanın
> >> içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve kullanmanız
> >> kesinlikle yasaktır ve bu elektronik postayı derhal silmeniz
> >> gerekmektedir.
> >> FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya eksiksiz olduğu
> >> konusunda herhangi bir garanti vermemektedir. Bu nedenle bu bilgilerin
> ne
> >> şekilde olursa olsun içeriğinden, iletilmesinden, alınmasından ve
> >> saklanmasından sorumlu değildir. Bu mesajdaki görüşler yalnızca gönderen
> >> kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir.
> >> Bu e-posta bilinen bütün bilgisayar virüslerine karşı taranmıştır.
> >> *
> >> This e-mail and any files transmitted with it are confidential and
> >> intended
> >> solely for the use of the individual or entity to whom they are
> addressed.
> >> If you are not the intended recipient you are hereby notified that any
> >> dissemination, forwarding, copying or use of any of the information is
> >> strictly prohibited, and the e-mail should immediately be deleted.
> FOREKS
> >> makes
> >> no warranty as to the accuracy or completeness of any information
> >> contained
> >> in this message and hereby excludes any liability of any kind for the
> >> information contained therein or for the information transmission,
> >> reception, storage or use of such in any way whatsoever. The opinions
> >> expressed in this message belong to sender alone and may not necessarily
> >> reflect the opinions of FOREKS.
> >> This e-mail has been scanned for all known computer viruses.
> >>
> >
>

-- 
 <http://www.foreksmobile.com/redirect.html>

P

Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu bir kez daha 
düsünelim. 
Please consider the environment before printing this e-mail.

Bu elektronik posta ve onunla iletilen bütün dosyalar sadece göndericisi 
tarafından alması amaçlanan yetkili gerçek ya da tüzel kişinin kullanımı 
içindir. Eğer söz konusu yetkili alıcı değilseniz bu elektronik postanın 
içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve kullanmanız 
kesinlikle yasaktır ve bu elektronik postayı derhal silmeniz gerekmektedir. 
FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya eksiksiz olduğu 
konusunda herhangi bir garanti vermemektedir. Bu nedenle bu bilgilerin ne 
şekilde olursa olsun içeriğinden, iletilmesinden, alınmasından ve 
saklanmasından sorumlu değildir. Bu mesajdaki görüşler yalnızca gönderen 
kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir. 
Bu e-posta bilinen bütün bilgisayar virüslerine karşı taranmıştır. 
* 
This e-mail and any files transmitted with it are confidential and intended 
solely for the use of the individual or entity to whom they are addressed. 
If you are not the intended recipient you are hereby notified that any 
dissemination, forwarding, copying or use of any of the information is 
strictly prohibited, and the e-mail should immediately be deleted. FOREKS makes 
no warranty as to the accuracy or completeness of any information contained 
in this message and hereby excludes any liability of any kind for the 
information contained therein or for the information transmission, 
reception, storage or use of such in any way whatsoever. The opinions 
expressed in this message belong to sender alone and may not necessarily 
reflect the opinions of FOREKS. 
This e-mail has been scanned for all known computer viruses.

Re: Menu getAll action returns table with many sql queries for each entry

Posted by Dan Haywood <da...@haywood-associates.co.uk>.
Partly.  The bulk loading is performed for the first page and subsequent
pages.

But there are some caveats, as documented more fullly on the ticket [1]:


*Note that there is room for improvement ... currently it loads all of the
objects in a single go, and does not pay any attention to the paging. An
improvement would be to pay attention to this and only load those objects
required for the current page (the information is available). One
complicaiton though is that client-side app tenancy filtering might result
in some of the loaded objects being hidden for the current user, and so it
would be necessary to query using some sort of do... while { } to keep
retrieving batches until enough (non-client-side-filtered-out) objects to
populate the current page were obtained.*

[1]
https://issues.apache.org/jira/browse/ISIS-1774?focusedCommentId=16307240&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-16307240

On Tue, 2 Jan 2018 at 08:58 Serdar Hamzaogullari <ha...@foreks.com>
wrote:

> Hi Dan,
>
> Does this commit also resolves pagination issue ?
>
> On Sun, Dec 31, 2017 at 8:07 PM, Dan Haywood <dan@haywood-associates.co.uk
> >
> wrote:
>
> > Hi Serdar,
> >
> > I've done a first-cut implementation of a solution for this, for 1.16.0.
> > It's disabled by default, and there is room for improvement, but it's
> > definitely a step in the right direction.
> >
> > Details on ISIS-1774 ticket
> >
> > Thx
> > Dan
> >
> >
> > On Tue, 21 Nov 2017 at 17:08 Dan Haywood <da...@haywood-associates.co.uk>
> > wrote:
> >
> > >
> > > Yes, there's a ticket [1].
> > >
> > > With respect to a query returning a million times etc., I take the view
> > > that this would be a modelling error... No user wants to browse over so
> > > many rows. I think the framework should, therefore, automatically limit
> > the
> > > number of rows, eg to 1000 (configurable).
> > >
> > > I'll look to do that in the same ticket.
> > >
> > > Thx,
> > > Dan.
> > >
> > >
> > >
> > > [1] https://issues.apache.org/jira/browse/ISIS-1774
> > >
> > >
> > > On Fri, 17 Nov 2017 at 10:46 Serdar Hamzaogullari <
> > hasan.serdar@foreks.com>
> > > wrote:
> > >
> > >> Hi Dan,
> > >>
> > >> Let me remind you that also: at the first table render still we have a
> > >> Select all sql query right ? Think we have one million record on
> table.
> > >> Select all and buffer these objects at memory can cause an out of
> > memory.
> > >> At the first table render before pagination you can apply the
> pagination
> > >> first page operation so that we never have a select all query.
> > >>
> > >> Did you create a ticket for this pagination issue ? How can I follow ?
> > Can
> > >> I contribute ? I did not go inside the isis codes before. Maybe you
> can
> > >> point me to the related codes.
> > >>
> > >> On Fri, Nov 17, 2017 at 1:03 PM, Dan Haywood <
> > >> dan@haywood-associates.co.uk>
> > >> wrote:
> > >>
> > >> > Hi Serdar,
> > >> > Yeah, saw your email, been mulling on the best solution for this.
> > >> >
> > >> > The issue is that behind the scenes Isis creates a serializable
> > (wicket)
> > >> > model which is the identity (oid) of each object to be rendered.
> When
> > >> the
> > >> > user navigates to the second page, we just render the next set of
> > >> objects
> > >> > from this list, rehyrdating each from the serialized oid one by one.
> > >> >
> > >> > I can think of two possible improvements.
> > >> >
> > >> > The first, probably easier, would be to keep the same general
> > >> architecture,
> > >> > but to optimize things so that the framework does a single bulk
> > request
> > >> of
> > >> > all object to be rendered.  I would imagine that would result in a
> > >> single
> > >> > SELECT FROM WHERE id in (x, y, z, a, b, ...) .  That's fine for a
> > >> small-ish
> > >> > number of objects (for example, SQL Server and Sybase have an upper
> > >> limit
> > >> > of ~1000 before they table scan).
> > >> >
> > >> > The second idea I have would be to change the architecture such that
> > on
> > >> > pagination we resubmit the original query, but then keep track of
> > where
> > >> > we're up to, eg instances 16~30 or 31~45 etc.  I think that would be
> > >> more
> > >> > work because the table being rendered would need to keep a memento
> of
> > >> that
> > >> > query, as well as which page we're on.
> > >> >
> > >> > I'll have a go at implementing the first idea as a first pass;
> > hopefully
> > >> > will be quite easy.
> > >> >
> > >> > Thx
> > >> > Dan
> > >> >
> > >> > On Fri, 17 Nov 2017 at 09:15 Serdar Hamzaogullari <
> > >> hasan.serdar@foreks.com
> > >> > >
> > >> > wrote:
> > >> >
> > >> > > Hello Dan,
> > >> > >
> > >> > > Maybe you missed my email. Did you investigate the pagination
> > >> performance
> > >> > > problem that I indicated in my previous email ?
> > >> > >
> > >> > > On Mon, Nov 13, 2017 at 11:50 AM, Serdar Hamzaogullari <
> > >> > > hasan.serdar@foreks.com> wrote:
> > >> > >
> > >> > > > Hi Dan,
> > >> > > >
> > >> > > > Thanks for the solution. I tried it and it works fine for get
> all
> > >> menu
> > >> > > > action however if I click to any page in the pagination list I
> see
> > >> the
> > >> > > sql
> > >> > > > queries for all entries again.
> > >> > > >
> > >> > > > I think we need to solve the pagination performance problem.
> > >> > > >
> > >> > > > On Sun, Nov 12, 2017 at 7:57 PM, Dan Haywood <
> > >> > > dan@haywood-associates.co.uk
> > >> > > > > wrote:
> > >> > > >
> > >> > > >> Hi Serdar,
> > >> > > >>
> > >> > > >> I did.  And here's the thing ... the framework has always done
> > this
> > >> > (at
> > >> > > >> least since 1.8.0, which was the first version I tested).  So,
> my
> > >> > > >> apologies
> > >> > > >> for indicating otherwise.
> > >> > > >>
> > >> > > >> Clearly we ought to do better here, and I do have a workaround
> > >> which
> > >> > you
> > >> > > >> could try out.  In your application's DomainApplication
> (subclass
> > >> of
> > >> > > >> IsisWicketApplication), add the following to the end of the
> > init()
> > >> > > method:
> > >> > > >>
> > >> > > >>
> > >> > > >> getRequestCycleSettings().setRenderStrategy(RequestCycleSett
> > >> > > >> ings.RenderStrategy.REDIRECT_TO_BUFFER);
> > >> > > >>
> > >> > > >> By default we use the REDIRECT_TO_RENDER strategy ... I dimly
> > >> recall
> > >> > my
> > >> > > >> rationale as being that it's "safer"; this Wicket wiki page [1]
> > >> > explains
> > >> > > >> the difference.  However, this is what causes the 1+N loading
> > that
> > >> we
> > >> > > see.
> > >> > > >> A first Isis/DN session is used to select the objects, and
> > mementos
> > >> > for
> > >> > > >> all
> > >> > > >> retrieved objects are captured.  This first session is then
> > closed.
> > >> > On
> > >> > > >> render, we then open a new Isis/DN session and use those
> mementos
> > >> to
> > >> > > >> retrieve all objects one by one.
> > >> > > >>
> > >> > > >> Using REDIRECT_TO_BUFFER means that all the work is done in a
> > >> single
> > >> > > >> session, avoiding the issue.
> > >> > > >>
> > >> > > >> My limited testing didn't throw up any adverse effects to
> > >> switching to
> > >> > > >> REDIRECT_TO_BUFFER, and I've raised a ticket [2] to explore
> > >> changing
> > >> > > this
> > >> > > >> behaviour.
> > >> > > >>
> > >> > > >> Thanks for raising this, let me know how you get on.
> > >> > > >>
> > >> > > >> Cheers
> > >> > > >> Dan
> > >> > > >>
> > >> > > >> [1]
> > >> > > https://cwiki.apache.org/confluence/display/WICKET/
> > Render+strategies
> > >> > > >> [2] https://issues.apache.org/jira/browse/ISIS-1774
> > >> > > >>
> > >> > > >>
> > >> > > >> On Sat, 11 Nov 2017 at 20:30 Serdar Hamzaogullari <
> > >> > > >> hasan.serdar@foreks.com>
> > >> > > >> wrote:
> > >> > > >>
> > >> > > >> > Hello Dan,
> > >> > > >> >
> > >> > > >> > Did you have a chance to take look at my github example app
> > >> > > >> >
> > >> > > >> > 9 Kas 2017 Per, saat 16:22 tarihinde Serdar Hamzaogullari <
> > >> > > >> > hasan.serdar@foreks.com> şunu yazdı:
> > >> > > >> >
> > >> > > >> > > Hi Dan,
> > >> > > >> > >
> > >> > > >> > > Here is a complete example of the problem
> > >> > > >> > >
> > >> > > >> > > https://github.com/radresian/apache-isis-sample
> > >> > > >> > >
> > >> > > >> > > After running the application Click the ProfilePreferences
> > >> Menu ->
> > >> > > >> List
> > >> > > >> > > All, then you will see the SQL queries for each entry at
> the
> > >> > console
> > >> > > >> > logs...
> > >> > > >> > >
> > >> > > >> > > On Thu, Nov 9, 2017 at 2:17 AM, Dan Haywood <
> > >> > > >> > dan@haywood-associates.co.uk>
> > >> > > >> > > wrote:
> > >> > > >> > >
> > >> > > >> > >> Hmm, looks ok.
> > >> > > >> > >>
> > >> > > >> > >> Can you upload an example app to github so I can pull it
> > down
> > >> and
> > >> > > >> take a
> > >> > > >> > >> closer look?
> > >> > > >> > >>
> > >> > > >> > >> Thx
> > >> > > >> > >> Dan
> > >> > > >> > >>
> > >> > > >> > >> On Wed, 8 Nov 2017 at 23:12 Serdar Hamzaogullari <
> > >> > > >> > hasan.serdar@foreks.com
> > >> > > >> > >> >
> > >> > > >> > >> wrote:
> > >> > > >> > >>
> > >> > > >> > >> > Hi Jörg,
> > >> > > >> > >> >
> > >> > > >> > >> > IdGeneratorStrategy.IDENTITY did not help. Same result.
> > >> > > >> > >> >
> > >> > > >> > >> > Hi Dan,
> > >> > > >> > >> >
> > >> > > >> > >> > Here is my repository:
> > >> > > >> > >> >
> > >> > > >> > >> >
> > >> > > >> > >> > @DomainService(
> > >> > > >> > >> >         nature = NatureOfService.DOMAIN,
> > >> > > >> > >> >         repositoryFor = ProfilePreferences.class
> > >> > > >> > >> > )
> > >> > > >> > >> > public class ProfilePreferencesRepository {
> > >> > > >> > >> >
> > >> > > >> > >> >     public List<ProfilePreferences> listAll() {
> > >> > > >> > >> >         return
> > >> > > >> > repositoryService.allInstances(ProfilePreferences.class);
> > >> > > >> > >> >     }
> > >> > > >> > >> >
> > >> > > >> > >> >     public ProfilePreferences get(final String name) {
> > >> > > >> > >> >         return repositoryService.uniqueMatch(
> > >> > > >> > >> >                 new QueryDefault<>(
> > >> > > >> > >> >                         ProfilePreferences.class,
> > >> > > >> > >> >                         "get",
> > >> > > >> > >> >                         "name", name));
> > >> > > >> > >> >     }
> > >> > > >> > >> >
> > >> > > >> > >> >     public ProfilePreferences create(final String name)
> {
> > >> > > >> > >> >         final ProfilePreferences object = new
> > >> > > >> > ProfilePreferences(name);
> > >> > > >> > >> >         serviceRegistry.injectServicesInto(object);
> > >> > > >> > >> >         repositoryService.persist(object);
> > >> > > >> > >> >         return object;
> > >> > > >> > >> >     }
> > >> > > >> > >> >
> > >> > > >> > >> >     @javax.inject.Inject
> > >> > > >> > >> >     RepositoryService repositoryService;
> > >> > > >> > >> >     @javax.inject.Inject
> > >> > > >> > >> >     ServiceRegistry2 serviceRegistry;
> > >> > > >> > >> > }
> > >> > > >> > >> >
> > >> > > >> > >> >
> > >> > > >> > >> >
> > >> > > >> > >> > On Wed, Nov 8, 2017 at 8:16 PM, Dan Haywood <
> > >> > > >> > >> dan@haywood-associates.co.uk>
> > >> > > >> > >> > wrote:
> > >> > > >> > >> >
> > >> > > >> > >> > > Hi Serdar,
> > >> > > >> > >> > >
> > >> > > >> > >> > > can you show us your repository implementation?
> > >> > > >> > >> > >
> > >> > > >> > >> > > I'm wondering why you have defined a query called
> > "Get", I
> > >> > > >> wonder if
> > >> > > >> > >> it's
> > >> > > >> > >> > > being used in that repo (I don't think it should be,
> if
> > >> so)
> > >> > > >> > >> > >
> > >> > > >> > >> > > Ta
> > >> > > >> > >> > > Dan
> > >> > > >> > >> > >
> > >> > > >> > >> > >
> > >> > > >> > >> > > On Wed, 8 Nov 2017 at 17:09 Rade, Joerg / Kuehne +
> > Nagel /
> > >> > Ham
> > >> > > >> > GI-DP <
> > >> > > >> > >> > > Joerg.Rade@kuehne-nagel.com> wrote:
> > >> > > >> > >> > >
> > >> > > >> > >> > > > Hi Serdar,
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > did you consider:
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > @javax.jdo.annotations.DatastoreIdentity(
> > >> > > >> > >> > > >         strategy =
> > >> > > >> > >> javax.jdo.annotations.IdGeneratorStrategy.IDENTITY,
> > >> > > >> > >> > > >         column = "id")
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > instead of:
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > @PrimaryKey?
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > Best regards
> > >> > > >> > >> > > > Jörg
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > -----Ursprüngliche Nachricht-----
> > >> > > >> > >> > > > Von: Serdar Hamzaogullari [mailto:
> > >> hasan.serdar@foreks.com]
> > >> > > >> > >> > > > Gesendet: Mittwoch, 8. November 2017 17:07
> > >> > > >> > >> > > > An: users@isis.apache.org
> > >> > > >> > >> > > > Betreff: Menu getAll action returns table with many
> > sql
> > >> > > queries
> > >> > > >> > for
> > >> > > >> > >> > each
> > >> > > >> > >> > > > entry
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > Hi,
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > I have a menu action like this, listAll action:
> > >> > > >> > >> > > >
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > @DomainService(
> > >> > > >> > >> > > >         nature = NatureOfService.VIEW_MENU_ONLY,
> > >> > > >> > >> > > >         objectType = "profile-preferences-services",
> > >> > > >> > >> > > >         repositoryFor = ProfilePreferences.class
> > >> > > >> > >> > > > )
> > >> > > >> > >> > > > @DomainServiceLayout(
> > >> > > >> > >> > > >         named = "Profile Preferences",
> > >> > > >> > >> > > >         menuOrder = "3"
> > >> > > >> > >> > > > )
> > >> > > >> > >> > > > public class ProfilePreferencesMenu {
> > >> > > >> > >> > > >
> > >> > > >> > >> > > >     @Action(semantics = SemanticsOf.SAFE)
> > >> > > >> > >> > > >     @ActionLayout(bookmarking =
> > BookmarkPolicy.AS_ROOT)
> > >> > > >> > >> > > >     @MemberOrder(sequence = "1")
> > >> > > >> > >> > > >     public List<ProfilePreferences> listAll() {
> > >> > > >> > >> > > >         return profilePreferencesRepository.
> > listAll();
> > >> > > >> > >> > > >     }
> > >> > > >> > >> > > > .
> > >> > > >> > >> > > > .
> > >> > > >> > >> > > > .
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > My Entity is that:
> > >> > > >> > >> > > >
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > @javax.jdo.annotations.PersistenceCapable(
> > >> > > >> > >> > > >         identityType=IdentityType.APPLICATION,
> > >> > > >> > >> > > >         table="profile_preferences",
> > >> > > >> > >> > > >         schema = "dbo"
> > >> > > >> > >> > > > )
> > >> > > >> > >> > > > @javax.jdo.annotations.Version(
> > >> > > >> > >> > > >         strategy= VersionStrategy.VERSION_NUMBER,
> > >> > > >> > >> > > >         column="version")
> > >> > > >> > >> > > > @javax.jdo.annotations.Queries({
> > >> > > >> > >> > > >         @javax.jdo.annotations.Query(
> > >> > > >> > >> > > >                 name = "get",
> > >> > > >> > >> > > >                 value = "SELECT "
> > >> > > >> > >> > > >                         + "FROM
> > >> > > >> > >> > > >
> > >> > > com.foreks.user.settings.domain.preferences.ProfilePreferences
> > >> > > >> "
> > >> > > >> > >> > > >                         + "WHERE
> > >> > profileName.equals(:name)")
> > >> > > >> > >> > > > })
> > >> > > >> > >> > > > @DomainObject(
> > >> > > >> > >> > > >         objectType = "profile-preferences"
> > >> > > >> > >> > > > )
> > >> > > >> > >> > > > public class ProfilePreferences implements
> > >> > > >> > >> > > Comparable<ProfilePreferences> {
> > >> > > >> > >> > > >
> > >> > > >> > >> > > >     public ProfilePreferences(final String
> > profileName)
> > >> {
> > >> > > >> > >> > > >         setProfileName(profileName);
> > >> > > >> > >> > > >     }
> > >> > > >> > >> > > >
> > >> > > >> > >> > > >     @javax.jdo.annotations.Column(allowsNull =
> > "false",
> > >> > > >> length=
> > >> > > >> > 150)
> > >> > > >> > >> > > >     @PrimaryKey
> > >> > > >> > >> > > >     @Getter @Setter
> > >> > > >> > >> > > >     @Title(prepend = "Profile Preferences: ")
> > >> > > >> > >> > > >     private String profileName;
> > >> > > >> > >> > > >
> > >> > > >> > >> > > >     @javax.jdo.annotations.Column(allowsNull =
> > "true",
> > >> > length
> > >> > > >> =
> > >> > > >> > >> 4000)
> > >> > > >> > >> > > >     @Property(editing = Editing.ENABLED,hidden =
> > >> > > >> Where.ALL_TABLES)
> > >> > > >> > >> > > >     @Getter @Setter
> > >> > > >> > >> > > >     private String preferences;
> > >> > > >> > >> > > >
> > >> > > >> > >> > > >     //region > delete (action)
> > >> > > >> > >> > > >     @Action(semantics =
> SemanticsOf.NON_IDEMPOTENT_ARE
> > >> > > >> _YOU_SURE)
> > >> > > >> > >> > > >     public void delete() {
> > >> > > >> > >> > > >         final String title =
> > titleService.titleOf(this);
> > >> > > >> > >> > > >
>  messageService.informUser(String.format("'%s'
> > >> > > >> deleted",
> > >> > > >> > >> > title));
> > >> > > >> > >> > > >         repositoryService.remove(this);
> > >> > > >> > >> > > >     }
> > >> > > >> > >> > > >     //endregion
> > >> > > >> > >> > > >
> > >> > > >> > >> > > >     //region > delete (action)
> > >> > > >> > >> > > >     @Action(semantics = SemanticsOf.NON_IDEMPOTENT)
> > >> > > >> > >> > > >     public ProfilePreferences
> > >> > copy(@ParameterLayout(named="P
> > >> > > >> rofile
> > >> > > >> > >> > > Name")
> > >> > > >> > >> > > > String name) {
> > >> > > >> > >> > > >         final ProfilePreferences object = new
> > >> > > >> > >> ProfilePreferences(name);
> > >> > > >> > >> > > >         object.setPreferences(preferences);
> > >> > > >> > >> > > >         repositoryService.persist(object);
> > >> > > >> > >> > > >         return object;
> > >> > > >> > >> > > >     }
> > >> > > >> > >> > > >     //endregion
> > >> > > >> > >> > > >
> > >> > > >> > >> > > >     //region > toString, compareTo
> > >> > > >> > >> > > >     @Override
> > >> > > >> > >> > > >     public String toString() {
> > >> > > >> > >> > > >         return ObjectContracts.toString(this,
> > >> > "profileName");
> > >> > > >> > >> > > >     }
> > >> > > >> > >> > > >
> > >> > > >> > >> > > >     @Override
> > >> > > >> > >> > > >     public int compareTo(final ProfilePreferences
> > >> other) {
> > >> > > >> > >> > > >         return ObjectContracts.compare(this, other,
> > >> > > >> > "profileName");
> > >> > > >> > >> > > >     }
> > >> > > >> > >> > > >     //endregion
> > >> > > >> > >> > > >
> > >> > > >> > >> > > >     //region > injected services
> > >> > > >> > >> > > >     @javax.inject.Inject
> > >> > > >> > >> > > >     RepositoryService repositoryService;
> > >> > > >> > >> > > >
> > >> > > >> > >> > > >     @javax.inject.Inject
> > >> > > >> > >> > > >     TitleService titleService;
> > >> > > >> > >> > > >
> > >> > > >> > >> > > >     @javax.inject.Inject
> > >> > > >> > >> > > >     MessageService messageService;
> > >> > > >> > >> > > >     //endregion
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > }
> > >> > > >> > >> > > >
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > When I click the List All action from the wicket
> > viewer
> > >> > menu,
> > >> > > >> > server
> > >> > > >> > >> > logs
> > >> > > >> > >> > > > this SQL queries:
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > 19:03:07,334  [Native
> >  http-nio-8080-exec-4
> > >> > > DEBUG]
> > >> > > >> > >> SELECT
> > >> > > >> > >> > > > 'com.foreks.user.settings.domain.preferences.
> > >> > ProfilePreferen
> > >> > > >> ces'
> > >> > > >> > AS
> > >> > > >> > >> > > >
> NUCLEUS_TYPE,A0.preferences,A0.profileName,A0.version
> > >> FROM
> > >> > > >> > >> > > > dbo.profile_preferences A0
> > >> > > >> > >> > > > 19:03:07,436  [Native
> >  http-nio-8080-exec-5
> > >> > > DEBUG]
> > >> > > >> > >> SELECT
> > >> > > >> > >> > > > A0.preferences,A0.version FROM
> dbo.profile_preferences
> > >> A0
> > >> > > WHERE
> > >> > > >> > >> > > > A0.profileName = <'ahl'>
> > >> > > >> > >> > > > 19:03:07,442  [Native
> >  http-nio-8080-exec-5
> > >> > > DEBUG]
> > >> > > >> > >> SELECT
> > >> > > >> > >> > > > A0.preferences,A0.version FROM
> dbo.profile_preferences
> > >> A0
> > >> > > WHERE
> > >> > > >> > >> > > > A0.profileName = <'akbank'>
> > >> > > >> > >> > > > 19:03:07,448  [Native
> >  http-nio-8080-exec-5
> > >> > > DEBUG]
> > >> > > >> > >> SELECT
> > >> > > >> > >> > > > A0.preferences,A0.version FROM
> dbo.profile_preferences
> > >> A0
> > >> > > WHERE
> > >> > > >> > >> > > > A0.profileName = <'bmd'>
> > >> > > >> > >> > > > 19:03:07,454  [Native
> >  http-nio-8080-exec-5
> > >> > > DEBUG]
> > >> > > >> > >> SELECT
> > >> > > >> > >> > > > A0.preferences,A0.version FROM
> dbo.profile_preferences
> > >> A0
> > >> > > WHERE
> > >> > > >> > >> > > > A0.profileName = <'DELTA'>
> > >> > > >> > >> > > > 19:03:07,460  [Native
> >  http-nio-8080-exec-5
> > >> > > DEBUG]
> > >> > > >> > >> SELECT
> > >> > > >> > >> > > > A0.preferences,A0.version FROM
> dbo.profile_preferences
> > >> A0
> > >> > > WHERE
> > >> > > >> > >> > > > A0.profileName = <'foreks'>
> > >> > > >> > >> > > > 19:03:07,466  [Native
> >  http-nio-8080-exec-5
> > >> > > DEBUG]
> > >> > > >> > >> SELECT
> > >> > > >> > >> > > > A0.preferences,A0.version FROM
> dbo.profile_preferences
> > >> A0
> > >> > > WHERE
> > >> > > >> > >> > > > A0.profileName = <'halky'>
> > >> > > >> > >> > > > 19:03:07,472  [Native
> >  http-nio-8080-exec-5
> > >> > > DEBUG]
> > >> > > >> > >> SELECT
> > >> > > >> > >> > > > A0.preferences,A0.version FROM
> dbo.profile_preferences
> > >> A0
> > >> > > WHERE
> > >> > > >> > >> > > > A0.profileName = <'hcbs'>
> > >> > > >> > >> > > > 19:03:07,477  [Native
> >  http-nio-8080-exec-5
> > >> > > DEBUG]
> > >> > > >> > >> SELECT
> > >> > > >> > >> > > > A0.preferences,A0.version FROM
> dbo.profile_preferences
> > >> A0
> > >> > > WHERE
> > >> > > >> > >> > > > A0.profileName = <'issanal'>
> > >> > > >> > >> > > > 19:03:07,483  [Native
> >  http-nio-8080-exec-5
> > >> > > DEBUG]
> > >> > > >> > >> SELECT
> > >> > > >> > >> > > > A0.preferences,A0.version FROM
> dbo.profile_preferences
> > >> A0
> > >> > > WHERE
> > >> > > >> > >> > > > A0.profileName = <'marbas'>
> > >> > > >> > >> > > > 19:03:07,489  [Native
> >  http-nio-8080-exec-5
> > >> > > DEBUG]
> > >> > > >> > >> SELECT
> > >> > > >> > >> > > > A0.preferences,A0.version FROM
> dbo.profile_preferences
> > >> A0
> > >> > > WHERE
> > >> > > >> > >> > > > A0.profileName = <'odeabank'>
> > >> > > >> > >> > > > 19:03:07,495  [Native
> >  http-nio-8080-exec-5
> > >> > > DEBUG]
> > >> > > >> > >> SELECT
> > >> > > >> > >> > > > A0.preferences,A0.version FROM
> dbo.profile_preferences
> > >> A0
> > >> > > WHERE
> > >> > > >> > >> > > > A0.profileName = <'odtu'>
> > >> > > >> > >> > > > 19:03:07,500  [Native
> >  http-nio-8080-exec-5
> > >> > > DEBUG]
> > >> > > >> > >> SELECT
> > >> > > >> > >> > > > A0.preferences,A0.version FROM
> dbo.profile_preferences
> > >> A0
> > >> > > WHERE
> > >> > > >> > >> > > > A0.profileName = <'osmanli'>
> > >> > > >> > >> > > > 19:03:07,506  [Native
> >  http-nio-8080-exec-5
> > >> > > DEBUG]
> > >> > > >> > >> SELECT
> > >> > > >> > >> > > > A0.preferences,A0.version FROM
> dbo.profile_preferences
> > >> A0
> > >> > > WHERE
> > >> > > >> > >> > > > A0.profileName = <'piramit'>
> > >> > > >> > >> > > > 19:03:07,512  [Native
> >  http-nio-8080-exec-5
> > >> > > DEBUG]
> > >> > > >> > >> SELECT
> > >> > > >> > >> > > > A0.preferences,A0.version FROM
> dbo.profile_preferences
> > >> A0
> > >> > > WHERE
> > >> > > >> > >> > > > A0.profileName = <'tebsanal'>
> > >> > > >> > >> > > > 19:03:07,517  [Native
> >  http-nio-8080-exec-5
> > >> > > DEBUG]
> > >> > > >> > >> SELECT
> > >> > > >> > >> > > > A0.preferences,A0.version FROM
> dbo.profile_preferences
> > >> A0
> > >> > > WHERE
> > >> > > >> > >> > > > A0.profileName = <'ZIRAAT'>
> > >> > > >> > >> > > >
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > There is a query for each entity.  The firs query
> > >> > > >> > >> > > >
> > >> > > >> > >> > > >  SELECT
> > >> > > >> > >> > 'com.foreks.user.settings.domain.preferences.
> > >> > ProfilePreferences'
> > >> > > >> > >> > > > AS NUCLEUS_TYPE,A0.preferences,
> > A0.profileName,A0.version
> > >> > FROM
> > >> > > >> > >> > > > dbo.profile_preferences A0
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > should be enough. Query for every entity becomes a
> > >> > > performance
> > >> > > >> > >> problem.
> > >> > > >> > >> > > > How can I prevent this behavior ? Is there some
> thing
> > >> wrong
> > >> > > or
> > >> > > >> > >> missing
> > >> > > >> > >> > in
> > >> > > >> > >> > > > my Entity Class or Menu Action Class ?
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > Help please :)
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > --
> > >> > > >> > >> > > >  <http://www.foreksmobile.com/redirect.html>
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > P
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > Bu mesaji yazdirmadan önce çevreye olan
> > sorumlulugumuzu
> > >> bir
> > >> > > kez
> > >> > > >> > daha
> > >> > > >> > >> > > > düsünelim.
> > >> > > >> > >> > > > Please consider the environment before printing this
> > >> > e-mail.
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > Bu elektronik posta ve onunla iletilen bütün
> dosyalar
> > >> > sadece
> > >> > > >> > >> > göndericisi
> > >> > > >> > >> > > > tarafından alması amaçlanan yetkili gerçek ya da
> tüzel
> > >> > > kişinin
> > >> > > >> > >> > kullanımı
> > >> > > >> > >> > > > içindir. Eğer söz konusu yetkili alıcı değilseniz bu
> > >> > > elektronik
> > >> > > >> > >> > postanın
> > >> > > >> > >> > > > içeriğini açıklamanız, kopyalamanız, yönlendirmeniz
> ve
> > >> > > >> kullanmanız
> > >> > > >> > >> > > > kesinlikle yasaktır ve bu elektronik postayı derhal
> > >> > silmeniz
> > >> > > >> > >> > > gerekmektedir.
> > >> > > >> > >> > > > FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya
> > >> > eksiksiz
> > >> > > >> > olduğu
> > >> > > >> > >> > > > konusunda herhangi bir garanti vermemektedir. Bu
> > >> nedenle bu
> > >> > > >> > >> bilgilerin
> > >> > > >> > >> > ne
> > >> > > >> > >> > > > şekilde olursa olsun içeriğinden, iletilmesinden,
> > >> > > alınmasından
> > >> > > >> ve
> > >> > > >> > >> > > > saklanmasından sorumlu değildir. Bu mesajdaki
> görüşler
> > >> > > yalnızca
> > >> > > >> > >> > gönderen
> > >> > > >> > >> > > > kişiye aittir ve FOREKS'in görüşlerini
> > yansıtmayabilir.
> > >> > > >> > >> > > > Bu e-posta bilinen bütün bilgisayar virüslerine
> karşı
> > >> > > >> taranmıştır.
> > >> > > >> > >> > > > *
> > >> > > >> > >> > > > This e-mail and any files transmitted with it are
> > >> > > confidential
> > >> > > >> and
> > >> > > >> > >> > > > intended solely for the use of the individual or
> > entity
> > >> to
> > >> > > whom
> > >> > > >> > they
> > >> > > >> > >> > are
> > >> > > >> > >> > > > addressed.
> > >> > > >> > >> > > > If you are not the intended recipient you are hereby
> > >> > notified
> > >> > > >> that
> > >> > > >> > >> any
> > >> > > >> > >> > > > dissemination, forwarding, copying or use of any of
> > the
> > >> > > >> > information
> > >> > > >> > >> is
> > >> > > >> > >> > > > strictly prohibited, and the e-mail should
> immediately
> > >> be
> > >> > > >> deleted.
> > >> > > >> > >> > FOREKS
> > >> > > >> > >> > > > makes no warranty as to the accuracy or completeness
> > of
> > >> any
> > >> > > >> > >> information
> > >> > > >> > >> > > > contained in this message and hereby excludes any
> > >> liability
> > >> > > of
> > >> > > >> any
> > >> > > >> > >> kind
> > >> > > >> > >> > > for
> > >> > > >> > >> > > > the information contained therein or for the
> > information
> > >> > > >> > >> transmission,
> > >> > > >> > >> > > > reception, storage or use of such in any way
> > whatsoever.
> > >> > The
> > >> > > >> > >> opinions
> > >> > > >> > >> > > > expressed in this message belong to sender alone and
> > may
> > >> > not
> > >> > > >> > >> > necessarily
> > >> > > >> > >> > > > reflect the opinions of FOREKS.
> > >> > > >> > >> > > > This e-mail has been scanned for all known computer
> > >> > viruses.
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > Kühne + Nagel (AG & Co.) KG
> > >> > > >> > >> > > > Rechtsform: Kommanditgesellschaft, Bremen HRA 21928,
> > >> > > >> USt-IdNr.: DE
> > >> > > >> > >> > > > 812773878.
> > >> > > >> > >> > > > Geschäftsleitung Kühne + Nagel (AG & Co.) KG: Dr.
> > >> Hansjörg
> > >> > > Rodi
> > >> > > >> > >> (Vors.
> > >> > > >> > >> > ),
> > >> > > >> > >> > > > Martin Brinkmann, Holger Ketz, Jan-Hendrik
> > Köstergarten,
> > >> > > >> Nicholas
> > >> > > >> > >> > Minde,
> > >> > > >> > >> > > > Michael Nebel, Lars Wedel, Matthias Weiner.
> > >> > > >> > >> > > > Persönlich haftende Gesellschafterin: Kühne & Nagel
> > >> A.G.,
> > >> > > >> > >> Rechtsform:
> > >> > > >> > >> > > > Aktiengesellschaft nach luxemburgischem Recht,
> > HR-Nr.: B
> > >> > > 18745,
> > >> > > >> > >> > > > Geschäftsführendes Verwaltungsratsmitglied: Karl
> > >> Gernandt.
> > >> > > >> > >> > > > Geschäftsleitung Region Zentral- und Osteuropa: Dr.
> > >> > Hansjörg
> > >> > > >> Rodi
> > >> > > >> > >> > > (Vors.),
> > >> > > >> > >> > > > Thierry Held, Uwe Hött, Richard Huhn, Holger Ketz,
> > >> > > Jan-Hendrik
> > >> > > >> > >> > > > Köstergarten, Jan Kunze, Michael Nebel, Guillaume
> > >> Sauzedde,
> > >> > > >> > Mustafa
> > >> > > >> > >> > > Sener.
> > >> > > >> > >> > > >
> > >> > > >> > >> > > > Wir arbeiten ausschließlich auf Grundlage der
> > >> Allgemeinen
> > >> > > >> > Deutschen
> > >> > > >> > >> > > > Spediteurbedingungen 2017 (ADSp 2017). Hinweis: Die
> > ADSp
> > >> > 2017
> > >> > > >> > >> weichen
> > >> > > >> > >> > in
> > >> > > >> > >> > > > Ziffer 23 hinsichtlich des Haftungshöchstbetrages
> für
> > >> > > >> Güterschäden
> > >> > > >> > >> (§
> > >> > > >> > >> > 431
> > >> > > >> > >> > > > HGB) vom Gesetz ab, indem sie die Haftung bei
> > >> multimodalen
> > >> > > >> > >> Transporten
> > >> > > >> > >> > > > unter Einschluss einer Seebeförderung und bei
> > >> unbekanntem
> > >> > > >> > Schadenort
> > >> > > >> > >> > auf
> > >> > > >> > >> > > 2
> > >> > > >> > >> > > > SZR/kg und im Übrigen die Regelhaftung von 8,33
> SZR/kg
> > >> > > >> zusätzlich
> > >> > > >> > >> auf
> > >> > > >> > >> > > 1,25
> > >> > > >> > >> > > > Millionen Euro je Schadenfall sowie 2,5 Millionen
> Euro
> > >> je
> > >> > > >> > >> > > Schadenereignis,
> > >> > > >> > >> > > > mindestens aber 2 SZR/kg, beschränken. Die ADSp sind
> > auf
> > >> > > >> unserer
> > >> > > >> > >> > Webseite
> > >> > > >> > >> > > > als Download erhältlich. Auf Anfrage senden wir
> Ihnen
> > >> diese
> > >> > > >> auch
> > >> > > >> > >> gerne
> > >> > > >> > >> > > zu.
> > >> > > >> > >> > > >
> > >> > > >> > >> > >
> > >> > > >> > >> >
> > >> > > >> > >> > --
> > >> > > >> > >> >  <http://www.foreksmobile.com/redirect.html>
> > >> > > >> > >> >
> > >> > > >> > >> > P
> > >> > > >> > >> >
> > >> > > >> > >> > Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu
> > bir
> > >> kez
> > >> > > >> daha
> > >> > > >> > >> > düsünelim.
> > >> > > >> > >> > Please consider the environment before printing this
> > e-mail.
> > >> > > >> > >> >
> > >> > > >> > >> > Bu elektronik posta ve onunla iletilen bütün dosyalar
> > sadece
> > >> > > >> > göndericisi
> > >> > > >> > >> > tarafından alması amaçlanan yetkili gerçek ya da tüzel
> > >> kişinin
> > >> > > >> > kullanımı
> > >> > > >> > >> > içindir. Eğer söz konusu yetkili alıcı değilseniz bu
> > >> elektronik
> > >> > > >> > postanın
> > >> > > >> > >> > içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve
> > >> > > kullanmanız
> > >> > > >> > >> > kesinlikle yasaktır ve bu elektronik postayı derhal
> > silmeniz
> > >> > > >> > >> gerekmektedir.
> > >> > > >> > >> > FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya
> > >> eksiksiz
> > >> > > >> olduğu
> > >> > > >> > >> > konusunda herhangi bir garanti vermemektedir. Bu nedenle
> > bu
> > >> > > >> bilgilerin
> > >> > > >> > >> ne
> > >> > > >> > >> > şekilde olursa olsun içeriğinden, iletilmesinden,
> > >> alınmasından
> > >> > ve
> > >> > > >> > >> > saklanmasından sorumlu değildir. Bu mesajdaki görüşler
> > >> yalnızca
> > >> > > >> > gönderen
> > >> > > >> > >> > kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir.
> > >> > > >> > >> > Bu e-posta bilinen bütün bilgisayar virüslerine karşı
> > >> > > taranmıştır.
> > >> > > >> > >> > *
> > >> > > >> > >> > This e-mail and any files transmitted with it are
> > >> confidential
> > >> > > and
> > >> > > >> > >> intended
> > >> > > >> > >> > solely for the use of the individual or entity to whom
> > they
> > >> are
> > >> > > >> > >> addressed.
> > >> > > >> > >> > If you are not the intended recipient you are hereby
> > >> notified
> > >> > > that
> > >> > > >> any
> > >> > > >> > >> > dissemination, forwarding, copying or use of any of the
> > >> > > >> information is
> > >> > > >> > >> > strictly prohibited, and the e-mail should immediately
> be
> > >> > > deleted.
> > >> > > >> > >> FOREKS
> > >> > > >> > >> > makes
> > >> > > >> > >> > no warranty as to the accuracy or completeness of any
> > >> > information
> > >> > > >> > >> contained
> > >> > > >> > >> > in this message and hereby excludes any liability of any
> > >> kind
> > >> > for
> > >> > > >> the
> > >> > > >> > >> > information contained therein or for the information
> > >> > > transmission,
> > >> > > >> > >> > reception, storage or use of such in any way whatsoever.
> > The
> > >> > > >> opinions
> > >> > > >> > >> > expressed in this message belong to sender alone and may
> > not
> > >> > > >> > necessarily
> > >> > > >> > >> > reflect the opinions of FOREKS.
> > >> > > >> > >> > This e-mail has been scanned for all known computer
> > viruses.
> > >> > > >> > >> >
> > >> > > >> > >>
> > >> > > >> > >
> > >> > > >> > >
> > >> > > >> >
> > >> > > >> > --
> > >> > > >> >  <http://www.foreksmobile.com/redirect.html>
> > >> > > >> >
> > >> > > >> > P
> > >> > > >> >
> > >> > > >> > Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu bir
> kez
> > >> daha
> > >> > > >> > düsünelim.
> > >> > > >> > Please consider the environment before printing this e-mail.
> > >> > > >> >
> > >> > > >> > Bu elektronik posta ve onunla iletilen bütün dosyalar sadece
> > >> > > göndericisi
> > >> > > >> > tarafından alması amaçlanan yetkili gerçek ya da tüzel
> kişinin
> > >> > > kullanımı
> > >> > > >> > içindir. Eğer söz konusu yetkili alıcı değilseniz bu
> elektronik
> > >> > > postanın
> > >> > > >> > içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve
> > >> kullanmanız
> > >> > > >> > kesinlikle yasaktır ve bu elektronik postayı derhal silmeniz
> > >> > > >> gerekmektedir.
> > >> > > >> > FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya eksiksiz
> > >> olduğu
> > >> > > >> > konusunda herhangi bir garanti vermemektedir. Bu nedenle bu
> > >> > bilgilerin
> > >> > > >> ne
> > >> > > >> > şekilde olursa olsun içeriğinden, iletilmesinden,
> alınmasından
> > ve
> > >> > > >> > saklanmasından sorumlu değildir. Bu mesajdaki görüşler
> yalnızca
> > >> > > gönderen
> > >> > > >> > kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir.
> > >> > > >> > Bu e-posta bilinen bütün bilgisayar virüslerine karşı
> > >> taranmıştır.
> > >> > > >> > *
> > >> > > >> > This e-mail and any files transmitted with it are
> confidential
> > >> and
> > >> > > >> intended
> > >> > > >> > solely for the use of the individual or entity to whom they
> are
> > >> > > >> addressed.
> > >> > > >> > If you are not the intended recipient you are hereby notified
> > >> that
> > >> > any
> > >> > > >> > dissemination, forwarding, copying or use of any of the
> > >> information
> > >> > is
> > >> > > >> > strictly prohibited, and the e-mail should immediately be
> > >> deleted.
> > >> > > >> FOREKS
> > >> > > >> > makes
> > >> > > >> > no warranty as to the accuracy or completeness of any
> > information
> > >> > > >> contained
> > >> > > >> > in this message and hereby excludes any liability of any kind
> > for
> > >> > the
> > >> > > >> > information contained therein or for the information
> > >> transmission,
> > >> > > >> > reception, storage or use of such in any way whatsoever. The
> > >> > opinions
> > >> > > >> > expressed in this message belong to sender alone and may not
> > >> > > necessarily
> > >> > > >> > reflect the opinions of FOREKS.
> > >> > > >> > This e-mail has been scanned for all known computer viruses.
> > >> > > >> >
> > >> > > >>
> > >> > > >
> > >> > > >
> > >> > >
> > >> > > --
> > >> > >  <http://www.foreksmobile.com/redirect.html>
> > >> > >
> > >> > > P
> > >> > >
> > >> > > Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu bir kez
> daha
> > >> > > düsünelim.
> > >> > > Please consider the environment before printing this e-mail.
> > >> > >
> > >> > > Bu elektronik posta ve onunla iletilen bütün dosyalar sadece
> > >> göndericisi
> > >> > > tarafından alması amaçlanan yetkili gerçek ya da tüzel kişinin
> > >> kullanımı
> > >> > > içindir. Eğer söz konusu yetkili alıcı değilseniz bu elektronik
> > >> postanın
> > >> > > içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve kullanmanız
> > >> > > kesinlikle yasaktır ve bu elektronik postayı derhal silmeniz
> > >> > gerekmektedir.
> > >> > > FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya eksiksiz
> olduğu
> > >> > > konusunda herhangi bir garanti vermemektedir. Bu nedenle bu
> > >> bilgilerin ne
> > >> > > şekilde olursa olsun içeriğinden, iletilmesinden, alınmasından ve
> > >> > > saklanmasından sorumlu değildir. Bu mesajdaki görüşler yalnızca
> > >> gönderen
> > >> > > kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir.
> > >> > > Bu e-posta bilinen bütün bilgisayar virüslerine karşı taranmıştır.
> > >> > > *
> > >> > > This e-mail and any files transmitted with it are confidential and
> > >> > intended
> > >> > > solely for the use of the individual or entity to whom they are
> > >> > addressed.
> > >> > > If you are not the intended recipient you are hereby notified that
> > any
> > >> > > dissemination, forwarding, copying or use of any of the
> information
> > is
> > >> > > strictly prohibited, and the e-mail should immediately be deleted.
> > >> FOREKS
> > >> > > makes
> > >> > > no warranty as to the accuracy or completeness of any information
> > >> > contained
> > >> > > in this message and hereby excludes any liability of any kind for
> > the
> > >> > > information contained therein or for the information transmission,
> > >> > > reception, storage or use of such in any way whatsoever. The
> > opinions
> > >> > > expressed in this message belong to sender alone and may not
> > >> necessarily
> > >> > > reflect the opinions of FOREKS.
> > >> > > This e-mail has been scanned for all known computer viruses.
> > >> > >
> > >> >
> > >>
> > >> --
> > >>  <http://www.foreksmobile.com/redirect.html>
> > >>
> > >> P
> > >>
> > >> Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu bir kez daha
> > >> düsünelim.
> > >> Please consider the environment before printing this e-mail.
> > >>
> > >> Bu elektronik posta ve onunla iletilen bütün dosyalar sadece
> göndericisi
> > >> tarafından alması amaçlanan yetkili gerçek ya da tüzel kişinin
> kullanımı
> > >> içindir. Eğer söz konusu yetkili alıcı değilseniz bu elektronik
> postanın
> > >> içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve kullanmanız
> > >> kesinlikle yasaktır ve bu elektronik postayı derhal silmeniz
> > >> gerekmektedir.
> > >> FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya eksiksiz olduğu
> > >> konusunda herhangi bir garanti vermemektedir. Bu nedenle bu bilgilerin
> > ne
> > >> şekilde olursa olsun içeriğinden, iletilmesinden, alınmasından ve
> > >> saklanmasından sorumlu değildir. Bu mesajdaki görüşler yalnızca
> gönderen
> > >> kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir.
> > >> Bu e-posta bilinen bütün bilgisayar virüslerine karşı taranmıştır.
> > >> *
> > >> This e-mail and any files transmitted with it are confidential and
> > >> intended
> > >> solely for the use of the individual or entity to whom they are
> > addressed.
> > >> If you are not the intended recipient you are hereby notified that any
> > >> dissemination, forwarding, copying or use of any of the information is
> > >> strictly prohibited, and the e-mail should immediately be deleted.
> > FOREKS
> > >> makes
> > >> no warranty as to the accuracy or completeness of any information
> > >> contained
> > >> in this message and hereby excludes any liability of any kind for the
> > >> information contained therein or for the information transmission,
> > >> reception, storage or use of such in any way whatsoever. The opinions
> > >> expressed in this message belong to sender alone and may not
> necessarily
> > >> reflect the opinions of FOREKS.
> > >> This e-mail has been scanned for all known computer viruses.
> > >>
> > >
> >
>
> --
>  <http://www.foreksmobile.com/redirect.html>
>
> P
>
> Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu bir kez daha
> düsünelim.
> Please consider the environment before printing this e-mail.
>
> Bu elektronik posta ve onunla iletilen bütün dosyalar sadece göndericisi
> tarafından alması amaçlanan yetkili gerçek ya da tüzel kişinin kullanımı
> içindir. Eğer söz konusu yetkili alıcı değilseniz bu elektronik postanın
> içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve kullanmanız
> kesinlikle yasaktır ve bu elektronik postayı derhal silmeniz gerekmektedir.
> FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya eksiksiz olduğu
> konusunda herhangi bir garanti vermemektedir. Bu nedenle bu bilgilerin ne
> şekilde olursa olsun içeriğinden, iletilmesinden, alınmasından ve
> saklanmasından sorumlu değildir. Bu mesajdaki görüşler yalnızca gönderen
> kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir.
> Bu e-posta bilinen bütün bilgisayar virüslerine karşı taranmıştır.
> *
> This e-mail and any files transmitted with it are confidential and intended
> solely for the use of the individual or entity to whom they are addressed.
> If you are not the intended recipient you are hereby notified that any
> dissemination, forwarding, copying or use of any of the information is
> strictly prohibited, and the e-mail should immediately be deleted. FOREKS
> makes
> no warranty as to the accuracy or completeness of any information contained
> in this message and hereby excludes any liability of any kind for the
> information contained therein or for the information transmission,
> reception, storage or use of such in any way whatsoever. The opinions
> expressed in this message belong to sender alone and may not necessarily
> reflect the opinions of FOREKS.
> This e-mail has been scanned for all known computer viruses.
>