我有一个可嵌入的模型(它不是一个实体),它只有 getter(我不想保留 setter,因为它的属性是固定的。)我将此模型嵌入到另一个实体中。
现在,我的要求是,当我在实体类中进行 GET 查询时,我想使用“Embeddable model”中定义的一些参数。现在的问题是,由于 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{}
....... }
获取调用
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?
Hibernate:通过 @CollectionOfElements
注释和 JPA 2.0 ElementCollection
映射支持嵌入集合。
嵌入式对象
无法直接查询,但可以在其父级上下文中查询。通常,最好选择父级,并从父级访问可嵌入项。这将确保嵌入对象已在持久性上下文
中注册。如果在查询中选择了嵌入,则生成的对象将分离
,并且不会跟踪更改。
例如。 从 FieldObservation fieldObservation 中选择 fieldObservation.o_code,其中 id= :param
。
我是一名优秀的程序员,十分优秀!