我正在处理用户输入文本的要求,我需要在屏幕上显示匹配的数据。
我使用 EclipseLink 作为 JPA 提供程序。
以下是代码
@Entity
@Table(name="customer")
public class Customer{
private List<Address> addresses = new ArrayList<Address>();
//other code
}
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type")
@Table(name="address")
public abstract class Address{
private String name;
}
@Entity
public class PostalAddress extends Address{
private Contact number;
}
public class Contact{
private String number;
public Contact(String number){
this.number = number;
}
}
在数据库中,我有表“地址”,其中有“名称”和“编号”列。
我想使用 CriteriaBuilder 创建一个谓词来搜索表中的特定值。
我试过使用
criteriabuiler.like(criteriabuiler.lower(root.join("addresses", JoinType.LEFT).<String>get("number")), searchString));
但它给出了例外
The attribute [msisdn] from the managed type [EntityTypeImpl@27575562:Address] is not present.
你能建议一种方法来实现这个东西吗?