Java Hibernate标准,两个实体

Java Hibernate标准,两个实体,java,hibernate,criteria,Java,Hibernate,Criteria,假设我有一个问题: 从EntityOne和EntityTwo中选择一个 其中one.id=two.otherId和two.someValue=2 我想使用Criteria工具对其进行转换,但不知道如何获取 提前感谢以下是有关如何使用标准获得结果的代码: EntityOne.java 将某些实体保存到数据库的代码: EntityOne eo1 = new EntityOne("Entity eo1"); EntityTwo et1 = new EntityTwo("one");

假设我有一个问题:

从EntityOne和EntityTwo中选择一个 其中one.id=two.otherId和two.someValue=2

我想使用Criteria工具对其进行转换,但不知道如何获取


提前感谢

以下是有关如何使用标准获得结果的代码:

EntityOne.java

将某些实体保存到数据库的代码:

    EntityOne eo1 = new EntityOne("Entity eo1");
    EntityTwo et1 = new EntityTwo("one");
    EntityTwo et2 = new EntityTwo("two");

    eo1.addEntity(et1);
    eo1.addEntity(et2);
    et1.setEntity(eo1);
    et2.setEntity(eo1);

    EntityOne eo2 = new EntityOne("Entity eo2");
    EntityTwo et3 = new EntityTwo("three");
    EntityTwo et4 = new EntityTwo("four");

    eo2.addEntity(et3);
    eo2.addEntity(et4);
    et3.setEntity(eo2);
    et3.setEntity(eo2);

    session.save(eo1);
    session.save(eo2);
下面是使用条件获取记录的代码:


只有修复实体并使用它们之间的关联,而不是使用引用其他实体的ID,才能做到这一点。这也会让你得到一个一的所有两个,和一个二的一个。阅读文档中有关关联的章节,创建一个OneToMany/ManyToOne双向关联。
@Entity
public class EntityTwo {
    @Id
    @GeneratedValue
    int id;
    String name;
    @ManyToOne
    @JoinColumn(name = "entity_one_id")
    private EntityOne entity;
    public EntityTwo(String name) {
        this.name = name;
    }
    // Default constructor, setters & getters
}
    EntityOne eo1 = new EntityOne("Entity eo1");
    EntityTwo et1 = new EntityTwo("one");
    EntityTwo et2 = new EntityTwo("two");

    eo1.addEntity(et1);
    eo1.addEntity(et2);
    et1.setEntity(eo1);
    et2.setEntity(eo1);

    EntityOne eo2 = new EntityOne("Entity eo2");
    EntityTwo et3 = new EntityTwo("three");
    EntityTwo et4 = new EntityTwo("four");

    eo2.addEntity(et3);
    eo2.addEntity(et4);
    et3.setEntity(eo2);
    et3.setEntity(eo2);

    session.save(eo1);
    session.save(eo2);
    Criteria criteria = session.createCriteria(EntityOne.class, "e1");
    criteria.createAlias("e1.entities", "e2");
    criteria.add(Restrictions.eq("e2.name", "two"));

    List<EntityOne> entityList = criteria.list();
    for (EntityOne entityOne : entityList) {
        System.out.println(entityOne.getName());
        for (EntityTwo entity : entityOne.getEntities()) {
            System.out.println("->" + entity.getName());
        }
    }
Entity eo1
->two
->one