[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] Filtering OneToMany and ManyToOne relationship mappings
|
Hi Luciano,
Filtering relationships in EclipseLink requires the use of our native API.
The way you do it is to create a DescriptorCustomizer
http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_customizer.htm#CHDCCDGC
In the DescriptorCustomizer, you will have to access the mapping you want to
change. Then you will have to alter the selection criteria for the mapping.
Here is some rough code from our test framework:
OneToOneMapping oneToOneMapping =
(OneToOneMapping)descriptor.getMappingForAttributeName("computer");
Expression exp = oneToOneMapping.buildSelectionCriteria();
ExpressionBuilder builder = exp.getBuilder();
Expression addedExpression =
builder.getField("MAP_HRW.EMP_LNAME").equal("Louis");
oneToOneMapping.setSelectionCriteria(exp.and(addedExpression));
Hopefully that will get you started. If you have problems, we can help you
on this list.
-Tom
On 03/06/2013 11:49 AM, Luciano Santos wrote:
Hello.
I am about to change our project's JPA implementation from Hibernate to EclipseLink.
There is a tough relationship i am struggling to accomplish.
The case is similar as this (as much it might seems to make no much sense):
@Entity @Table(name="tb_role")
class Role {
@Id
private Long id;
@Enumerated(STRING)
private ProductType productType; // STANDARD, SPECIAL
...
}
@Entity @Table(name="rl_user_role")
class UserRole {
...
@ManyToOne
private Role role;
private String comments;
...
}
@Entity @Table(name="tb_user")
class User {
@Id
private Long id;
@ManyToOne
// NEED to filter for SPECIAL (property or column value on Role)
// DO NOT HAVE A LOCAL FK column, should use USER_ID on rl_user_role
private UserRole claimForOthersRole;
@OneToMany
// NEED to filter for STANDARD (property or column value on Role)
@JoinColumn(name = "user_id")
private Set<UserRole> roles;
}
Do you guys have any clue on how could i accomplish this? I was trying to use
Hibernate's @Where annotation, but i could just filter using columns on
"rl_user_role" (Couldn't be nested).
Thank you
Luciano Santos
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users