我有一个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?
答案 0 :(得分:0)
Hibernate:通过@CollectionOfElements
注释和JPA 2.0 ElementCollection
映射支持嵌入式集合。
无法直接查询嵌入式objects
,但可以在其父级的上下文中查询它们。通常,最好选择父级,并从父级访问embeddable。这将确保嵌入在persistence context
注册。如果在查询中选择了embeddable,则生成的对象将为detached
,并且不会跟踪更改。
实施例。 select fieldObservation.o_code from FieldObservation fieldObservation where id= :param
。