EJB QL/ JPQL and search for inheritance
jrosskopf Dec 6, 2006 7:10 AMHello,
I have a problem with creating a QL expression for some of my entities. First of all I have an entity "Item" which has a ManyToMany reference to 0..* "Tags" But Tag is just a base class for more complex Entities such as "PlaceMark"
@Entity public class Item implements Serializable{ private static final long serialVersionUID = -6240744395949853067L; . . . /** * Get a list of tags associated with the item * @return list of tags associated with the item */ @ManyToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE}) public List<Tag> getTags() { return tags; } public void setTags(List<Tag> tags) { this.tags = tags; } }
@Entity @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name="dtype", discriminatorType=DiscriminatorType.STRING) @DiscriminatorValue("Tag") public class Tag implements Serializable{ private static final long serialVersionUID = 2432906233376577675L; long gid; String name; List<Item> items; @Id @GeneratedValue public long getGid() { return gid; } public void setGid(long gid) { this.gid = gid; } public String getName() { return name; } public void setName(String value) { this.name = value; } @ManyToMany(mappedBy="tags", cascade={CascadeType.PERSIST, CascadeType.MERGE}) public List<Item> getItems() { return items; } public void setItems(List<Item> items) { this.items = items; } }
@Entity @DiscriminatorValue("PlaceMark") public class PlaceMark extends Tag implements Serializable { private static final long serialVersionUID = -6646702308712255267L; boolean visibibilty; LookAt lookAt; Point point; public PlaceMark() { super.setName("PlaceMark"); } @Embedded public LookAt getLookAt() { return lookAt; } public void setLookAt(LookAt lookAt) { this.lookAt = lookAt; } @Embedded() public Point getPoint() { return point; } public void setPoint(Point point) { this.point = point; } public boolean isVisibibilty() { return visibibilty; } public void setVisibibilty(boolean visibibilty) { this.visibibilty = visibibilty; } public void setName(String value) { } }
So now my question, how can I search for items annotaded with different types of tags in the "Tag" class hierachy?
Thank you in advance.
Regards
---
Joachim