【发布时间】:2019-01-17 23:47:26
【问题描述】:
假设我与 Person 实体有一个双向 1-1 关联
@Entity
public class Person {
@OneToOne(optional=false)
@JoinColumn(name = "contact_id")
private Contact contact;
// getters/setters/constructors
}
以及联系实体
@Entity
public class Contact {
@OneToOne(mappedBy="contact")
private Person person;
// getters/setters/
}
我找不到使用联系人实体为人员实体选择父对象的方法。就这样……
criteriaQuery.select(root.get(Contact_.person));
我收到此错误:
不兼容的类型。必选 的捕获,但 'get' 被推断为 Path
有没有办法做到这一点?我想使用 Contact 根返回 Person Entity 的谓词。例如。
public static Specification<Person> phoneWithCountryCode(String countryCode) {
return new Specification<Person>() {
@Override
public Predicate toPredicate(
Root<Contact> root,
CriteriaQuery<?> criteriaQuery,
CriteriaBuilder criteriaBuilder
) {
String startsWithPattern = countryCode + "%";
criteriaQuery.select(root.get(Contact_.person));
return criteriaBuilder.like(
root.get(Contact_.phone), startsWithPattern
);
}
};
}
【问题讨论】:
-
显示所有代码
-
这只是一个示例代码。规范的方法有点像更新后的问题。
标签: java hibernate entity jpa-criteria