我对某些实体使用IdClass
无法解析属性:sampleYear 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包含这三个字段
我明白了
org.hibernate.QueryException:无法解析属性:sampleYear of: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 ?
他们添加了更多字段,然后按顺序排序...
答案 0 :(得分:1)
为什么此字段未知?
您没有在任何地方声明samplingYear
。它只会出现在错误消息和Pageable
的描述中,而不会出现在您的实体或您的id类中。
也许您是说sampling.year
?