Java 多对一单向关系的条件查询
这回答了相反的关系。我一直在尝试为以下模型提出一个条件查询:Java 多对一单向关系的条件查询,java,sql,jpa,criteria-api,Java,Sql,Jpa,Criteria Api,这回答了相反的关系。我一直在尝试为以下模型提出一个条件查询: @Entity public class One { @Id private BigInteger supplierId; @Column(name = "name") String name; ... } @Entity public class Many { @Id private BigInteger posId; @ManyToOne @Jo
@Entity
public class One {
@Id
private BigInteger supplierId;
@Column(name = "name")
String name;
...
}
@Entity
public class Many {
@Id
private BigInteger posId;
@ManyToOne
@JoinColumn(name = "column_name")
One one;
@Column(name = "description")
String description;
}
我不能改变模型。我大部分都是这样保持它的单向性。我正在尝试为以下情况提供Criteria Builder代码:
-我将被赋予以下属性:nam
,desc
。我需要找到所有的One
实体,其名称属性等于nam
,并且有一个相关的Many
实体,其描述属性等于desc
Criteria query = this.getSession().createCriteria(Many.class);
query = query.add(Restrictions.eq("one.name", nam));
query = query.add(Restrictions.eq("description", desc));
query.list();
这种方法不起作用???我将把它翻译成JPA标准生成器并检查它是否起作用。但我怀疑不会。我想我需要两个根来让它工作,还有一个连接。还要注意的是,我正在寻找类型为
One
的结果,只是用may.getOne()获取值,还是将其设置为eager?您也可以在条件中使用子查询。。。