【发布时间】:2018-07-19 02:06:10
【问题描述】:
我将 IdClass 用于某些实体
无法解析属性:samplingYear of: com.lcm.model.Samples
public class SamplingsPK implements Serializable {
private int year;
private Integer id;
public SamplingsPK(int year, Integer id) {
this.id = id;
this.year=year;
}
..
}
public class SamplesPK implements Serializable {
private SamplingsPK sampling;
private String sampleLetter;
public SamplesPK(SamplingsPK sampling, String sampleLetter) {
this.sampling = sampling;
this.sampleLetter = sampleLetter;
}
...
}
@Entity
@IdClass(SamplesPK.class)
public class Samples {
@Id
private String sampleLetter;
@Id
@ManyToOne(optional=false)
@JoinColumns({
@JoinColumn(name = "sampling_id", referencedColumnName = "id"),
@JoinColumn(name = "sampling_year", referencedColumnName = "year")})
private Samplings sampling;
....
}
@Entity
@IdClass(SamplingsPK.class)
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Samplings {
@Id
private Integer year;
@Id
@GeneratedValue
private Integer id;
...
}
当我运行这个查询时
@Query(
value = "select s from Samples s Join fetch s.sampling sp Join fetch sp.machine m Join fetch sp.product p Join fetch p.productType",
countQuery = "select count(s) from Samples s Join s.sampling sp Join sp.machine m Join sp.product p Join p.productType")
public Page<Samples> findAllFullSample(Pageable pageable);
和Pageable包含这3个字段
- 采样年
- samplingId
- 样本信
我明白了
org.hibernate.QueryException:无法解析属性:sampleYear 来自:com.lcm.model.Samples
在示例中,我有 Samplings 类,因此我需要通过对象名称来访问 Year 和 Id...
为什么这个字段是未知的?
编辑
如果我使用 id,年份 sampleLetter
select
samples0_.sample_letter as sample_l1_20_0_,
....
from
samples samples0_
inner join
samplings samplings1_
on samples0_.sampling_id=samplings1_.id
and samples0_.sampling_year=samplings1_.year
order by
samples0_.sampling_year asc,
samples0_.sample_letter,
samples0_.sampling_id,
samples0_.sampling_year asc,
samples0_.sample_letter asc limit ?
他们添加了比我需要的更多字段...
【问题讨论】:
标签: hibernate jpa spring-data-jpa