如何在Hibernate中查询Embedded类?

时间:2016-07-21 01:02:04

标签: java hibernate rest jpa

我有一个Embeddable模型(它不是一个实体),它只有getter(我不想保留setter,因为它的属性是固定的。)我把这个模型嵌入到另一个实体中。

现在,我的要求是, 当我在实体类中进行GET查询时,我想使用" Embeddable模型中定义的一些参数" 。现在的问题是,由于Embeddable模型没有单独的表,我无法查询数据库。

我如何在Hiberanate中解决这个问题?

可嵌入课程

@Embeddable
public class Observation  {


    @Column(name = "CREATED")
    private LocalDateTime created;

   @NotNull
    @Column(name="O_CODE")
    private String o_code;

    public String getCode() {
        return o_code;
    }
   public String getCreated() {
        return created;
    }
}

实体类

@Table(name = "field_observation", uniqueConstraints = @UniqueConstraint(columnNames = "code"))
public class FieldObservation {

 private Long id;

  @Embedded
    private Observation observation = null; 


    getObservation{}
    setObservation{}

.........     }

GET call

public Response getItems(
    @QueryParam("o_code") java.lang.String o_code,
    @QueryParam("id") java.lang.Long id,
    @QueryParam("format") @DefaultValue("list") String format
) {
----  //How to query database to get Observation entry?

1 个答案:

答案 0 :(得分:0)

Hibernate:通过@CollectionOfElements注释和JPA 2.0 ElementCollection映射支持嵌入式集合。

无法直接查询嵌入式objects,但可以在其父级的上下文中查询它们。通常,最好选择父级,并从父级访问embeddable。这将确保嵌入在persistence context注册。如果在查询中选择了embeddable,则生成的对象将为detached,并且不会跟踪更改。

实施例。 select fieldObservation.o_code from FieldObservation fieldObservation where id= :param