【问题标题】:JPA: How can I Select @Embeddable ClassJPA:如何选择@Embeddable 类
【发布时间】:2013-05-21 15:20:46
【问题描述】:

我将从@Embeddable Class Certification 中选择所有列。但我无法选择它。如何选择 Embeddable 类。

@Entity
public class Department implements Serializable {


  private static final long serialVersionUID = 1L;
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;
  private String name;

  @ElementCollection
  @CollectionTable(name = "Certification", joinColumns = {@JoinColumn(name="user_id")})
  private List<Certification> certifications = new ArrayList<Certification>();

  public List<Certification> getCertifications() {
      return certifications;
  }

  public void setCertifications(List<Certification> certifications) {
      this.certifications = certifications;
  }


  public String getName() {
      return name;
  }

  public void setName(String name) {
      this.name = name;
  }

  .....

@Embeddable 类认证

@Embeddable
public class Certification{

  private String name;
  private String certArt;

  public String getName() {
      return name;
  }

  public void setName(String name) {
      this.name = name;
  }



  public String getCertArt() {
      return certArt;
  }

  public void setCertArt(String certArt) {
      this.certArt = certArt;
  }

  ......

如果我运行 ResultService,我会得到以下异常:

原因:java.lang.IllegalArgumentException:在 EntityManager 中创建查询时发生异常: 异常描述:编译查询时出错 [从认证 c 中选择 c]。未知实体类型 [Certification]。

如何选择@Embeddable 类?

【问题讨论】:

    标签: java jpa ejb-3.0


    【解决方案1】:

    您需要通过真实的实体类(即Department)检索Certification。一个示例查询如下:

       select cer from Department dep join dep.certifications cer
    

    或者,您可能希望检索符合条件的部门实体,然后使用它们获取认证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 2023-03-21
      • 1970-01-01
      • 2011-07-12
      相关资源
      最近更新 更多