Hello I have a question about Hibernate's Query by Example API. I know it is not realy connected with AppFusse but meaby sombody have the same problem and has solved it.
I have a class Project and ProjectUsers which looks like: Project ---has-0-or-more --> ProjectUsers public class Project extends BaseObject { private Long id; private String symbol; private String name; private Set projectUsers = new HashSet(); ... /** * @return Returns the project users. * * @hibernate.set name="project_user" lazy="false" cascade="none" inverse="true" * @hibernate.key column="project_id" * @hibernate.one-to-many class="pl.unizeto.unitrack.model.ProjectUser" */ public Set getProjectUsers() { return projectUsers; } public void setProjectUsers(Set projectUsers) { this.projectUsers = projectUsers; } ... } public class ProjectUser extends BaseObject { private Long id; private Project project = new Project(); private Long projectId; private User user = new User(); private Long userId; private boolean projectManager; ... /** * @hibernate.many-to-one insert="false" update="false" cascade="none" lazy="false" * column="project_id" not-null="true" */ public Project getProject() { return project; } public void setProject(Project project) { this.project =project; } /** * @hibernate.property column="project_id" not-null="true" */ public Long getProjectId() { return projectId; } /** * @spring.validator type="required" */ public void setProjectId(Long projectId) { this.projectId = projectId; } /** * @hibernate.many-to-one insert="false" update="false" cascade="none" lazy="false" * column="user_id" not-null="true" */ public User getUser() { return user; } public void setUser(User user) { this.user = user; } /** * @hibernate.property column="user_id" not-null="true" */ public Long getUserId() { return userId; } /** * @spring.validator type="required" */ public void setUserId(Long userId) { this.userId = userId; } /** * @hibernate.property column="project_manager" type="yes_no" */ public boolean isProjectManager() { return projectManager; } public void setProjectManager(boolean projectManager) { this.projectManager = projectManager; } ... } In ProjectDaoHibernate i have written the function: public List getProjects(final Project project) { if (project == null) { return getHibernateTemplate().find("from Project"); } else { // Use Hibernate's Query by Example API.*/ // Filter on properties set in the project HibernateCallback callback = new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Example ex = Example.create(project).ignoreCase().enableLike(MatchMode.ANYWHERE); Criteria criteria = session.createCriteria(Project.class).add(ex); /* ???????????????????????? if(project.getProjectUsers() != null && project.getProjectUsers().size() > 0) { Iterator iter = project.getProjectUsers().iterator(); while(iter.hasNext()) { ProjectUser projectUser = (ProjectUser)iter.next(); // how to add projectUser criteria from projectUsers set } } ???????????????????????? */ return criteria.list(); } }; return (List) getHibernateTemplate().execute(callback); } } Right now getProjects allow me to get projects by some simple property criteria from Project object. What I wnat to achieve is to get projects considering projectUsers set in Project. For example: 1. I would like to get all projects for user tomcat (userId = 2) and only where he is a manager of them. So i would do something like this: Project project = new Project(); Set projectUsers = new HashSet(); ProjectUser projectUser = new ProjectUser(); projectUser.setUserId(new Long(2)); projectUser.setProjectManager(true); projectUsers.add(projectUser); project.setProjectUsers(projectUsers); List projects = projectManager.getProjects(project); 2. I would like to get all projects for user admin and tomcat in this way: Project project = new Project(); Set projectUsers = new HashSet(); ProjectUser projectUser1 = new ProjectUser(); projectUser1.setUserId(new Long(1)); projectUsers.add(projectUser1); ProjectUser projectUser2 = new ProjectUser(); projectUser2.setUserId(new Long(2)); projectUsers.add(projectUser2); project.setProjectUsers(projectUsers); List projects = projectManager.getProjects(project); What should I put in the /* ?????...?????*/ place of the getProjects? Is there any solution to use Hibernate's Query by Example with Sets like this Best Regards Jarek -- View this message in context: http://www.nabble.com/Hibernate%27s-Query-on-HashSet-tf3220598s2369.html#a8944265 Sent from the AppFuse - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]