David,
Yeah, I would've thought that too, definitions should model only static
structure.
Given my first example, I would like to do a query like "find a Group that has all 3 kinds of
members (LEADER, VICE, MEMBER)".
Or even more complex: "find a Group where a/the leader's name is like Blah, a/the vice's name is
like Bleh, and a/the member's name is like Bluh".
I've having difficulty putting that into a view-entity and generating a resultant ListIterator
with GenericDelegator.
Help? Thanks!
Jonathon
David E Jones wrote:
In general entity and view entity definitions are meant to model
structure, not query constraints. Just add your desired constraints to
the EntityCondition passed into the findByCondition call (or Map for
findByAnd or whatever).
-David
Jonathon -- Improov wrote:
Hi Rodrigo,
Are you absolutely sure that works?
First, your suggestion throws an exception. Note that there is no such
field as Member.leaderId.
Second, do take a look at SqlJdbcUtil.java method makeFromClause().
That's where you'll see the joins being made. You'll also see that
this isn't possible:
"... <table1> JOIN <table2> ON (<table1>.partyId = <table2>.partyId
AND <table2>.roleId = 'LEADER') ..."
What is possible is only:
"... <table1> JOIN <table2> ON (<table1>.partyId = <table2>.partyId) ..."
So, to answer my own question, the OFBiz Entity framework doesn't seem
to handle what I requested for.
Perhaps I'm not understanding your suggestion? Would you mind
indicating whether you are sure the suggestion works or whether it's a
mere guess? Thanks.
If you are sure it works, I'll spend more time trying your suggestion.
But from first impressions, you may have missed something because it
throws an error.
Jonathon
Rodrigo Souza wrote:
Add to your code:
<key-map field-name="roleId" rel-field-name="leaderId"/>
i.e
<view-link entity-alias="GP" rel-entity-alias="LD"
rel-optional="true">
<!-- Where LD.roleId is "LEADER" -->
<key-map field-name=roleId" rel-field-name="leaderId"/>
</view-link>
2007/8/6, Jonathon -- Improov <[EMAIL PROTECTED]>:
In view-entity(s), is it possible to have conditionals in <relation>?
For eg, an entity Group can have 3 types of members: "LEADER",
"VICE" and "MEMBER".
I've included my thoughts in the crude example below (please ignore
syntax errors).
<entity entity-name="Group">
<field name="groupId"/>
</entity>
<entity entity-name="Member">
<field name="memberId"/>
<field name="groupId"/>
<field name="roleId"/>
<relation rel-entity-name="Group">
<key-map field-name="groupId"/>
</relation>
</entity>
<view-entity entity-name="GroupAndMember">
<member-entity entity-alias="GP" entity-name="Group"/>
<member-entity entity-alias="LD" entity-name="Member"/>
<member-entity entity-alias="VC" entity-name="Member"/>
<member-entity entity-alias="MB" entity-name="Member"/>
<alias-all entity-alias="GP"/>
<alias entity-alias="LD" name="leaderId" field-name="memberId"/>
<alias entity-alias="VC" name="viceId" field-name="memberId"/>
<alias entity-alias="MB" name="memberId" field-name="memberId"/>
<view-link entity-alias="GP" rel-entity-alias="LD"
rel-optional="true">
<!-- Where LD.roleId is "LEADER" -->
</view-link>
<view-link entity-alias="GP" rel-entity-alias="VC"
rel-optional="true">
<!-- Where VC.roleId is "VICE" -->
</view-link>
<view-link entity-alias="GP" rel-entity-alias="MB"
rel-optional="true">
<!-- Where MB.roleId is "MEMBER" -->
</view-link>
</entity>
I know that I can simply use different entities for leader, vice and
member (eg Leader, Vice and
Member). But that would be a little awkward, since all the 3
entities will have exactly the same
fields (just different roleIds).
Is the above possible in OFBiz's Entity framework?
Jonathon