hi,
i am trying to execute a find using Criteria/Example on an Entity that contains a List of enum. consider a class such as:
@Entity public class MockEntity extends ModelBase implements Serializable {
@CollectionOfElements() @Enumerated(EnumType.STRING) private List<MockEnum> mockEnums; ... }
here, the enum is defined as:
public enum MockEnum { GOOD, BAD, OTHER; }
i am trying to find MockEntity objects containing a prescribed MockEnum contained in the MockEntity.List<MockEnum> list.
i have created a findByExample() method that utilizes Criteria/Example to execute the query:
public List<T> findByExample(T exampleInstance, String[] excludeProperty) { Criteria criteria = getSession().createCriteria(entityClass); Example example = Example.create(exampleInstance); if (excludeProperty != null) { for (int i = 0; i < excludeProperty.length; i++) example.excludeProperty(excludeProperty[i]); } criteria.add(example); criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); return criteria.list(); }
i tried calling the findByExample() method as follows:
MockEntity example = new MockEntity(); List<MockEntity.MockEnum> enums = new ArrayList<MockEntity.MockEnum>(); enums.add(MockEntity.MockEnum.OTHER); example.setMockEnum(enums); dao = new MockEntityDao(); List<MockEntity> found = dao.findByExample(example, null);
but, the List called found contains all of the MockEntity residing in the DB -- not merely the MockEntity containing MockEnum.OTHER in the associated MockEntity.List<MockEnum>.
does anybody have suggestions on how i can achieve this: find MockEntity objects that contain a prescribed MockEnum in their list?
thank you for your help.
|