package test; import java.io.Serializable; import java.util.*; import javax.persistence.*; import javax.persistence.Persistence; public final class MyTestCase { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory( "objectdb:$objectdb/db/test.tmp;drop"); EntityManager em = emf.createEntityManager(); for (int i = 0; i < 88; i++) { em.getTransaction().begin(); Main main = new Main(); List fields = new ArrayList<>(); Field e = new Field(); e.setKey(new Key(1 + (i + 1) * 10, "abc")); fields.add(e); e = new Field(); e.setKey(new Key(2 + (i + 1) * 10, "abc")); fields.add(e); e = new Field(); e.setKey(new Key(3 + (i + 1) * 10, "dcb")); fields.add(e); main.setKey(new Key(i + 1, "zxy")); main.setFields(fields); em.persist(main); em.getTransaction().commit(); } TypedQuery query1 = em.createQuery("select f from Field f where f.key.option = 'abc'", Field.class); List fields = query1.getResultList(); for (Field field : fields) { System.out.println(field.getKey()); } System.out.println("Done."); em.close(); emf.close(); } @Entity public static class Main { @Id private Key key; @ElementCollection private List fields; public Key getKey() { return key; } public void setKey(Key key) { this.key = key; } public void setFields(List fields) { this.fields = fields; } } @Entity public static class Field { @EmbeddedId private Key key; public Field() { } public Key getKey() { return key; } public void setKey(Key key) { this.key = key; } } @Embeddable public static class Key implements Serializable { int key; String option; public Key(int key, String option) { this.key = key; this.option = option; } public Key(Key key) { this.key = key.getKey(); } public Key() { } public int getKey() { return key; } public void setKey(int key) { this.key = key; } public String getOption() { return option; } public void setOption(String operator) { this.option = operator; } @Override public String toString() { return "Key{" + "key=" + key + ", operator='" + option + '\'' + '}'; } } }