1

ユーザーがテキストを入力し、一致するデータを画面に表示する必要があるという要件に取り組んでいます。

JPAプロバイダーとしてEclipseLinkを使用しています。

以下はコードです

@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 を使用して Predicate を作成し、テーブル内の特定の値を検索したいと考えています。

使ってみました

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.

このことを実装する方法を提案してもらえますか?

4

0 に答える 0