Java Hibernate标准,两个实体
假设我有一个问题: 从EntityOne和EntityTwo中选择一个 其中one.id=two.otherId和two.someValue=2 我想使用Criteria工具对其进行转换,但不知道如何获取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.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