折叠命名查询
<named-query name="fix.getByProblem">
<query>
SELECT f
FROM Fix f JOIN f.solved s
WHERE s.id IN :ids
</query>
</named-query>应该返回所有解决至少一个给定问题但错误消息失败的修补程序。
异常描述:编译查询fix.getByProblem时出错: 从Fix中选择f加入f.solved s,其中s.id IN :id ],类ProblemHandle的未知状态或关联字段id。
模型如下:(简化)
Fix.java
@ElementCollection
@CollectionTable(name = "FIX_SOLVED", schema = SCHEMA_NAME, joinColumns = {@JoinColumn(name = "SOURCE_VERSION", referencedColumnName = "version")})
@AttributeOverrides({ @AttributeOverride(column = @Column(name = "SOLVED_ID", nullable = true), name = "id") })
private Collection<ProblemHandle> solved;ProblemHandle.java
@Embeddable
@Access(AccessType.PROPERTY)
public class ProblemHandle {
private Long id;
...
}Problem.java
@Entity(name = Problem.ENTITY_NAME)
@Access(value = AccessType.FIELD)
@Table(name = Problem.TABLE_NAME, schema = Problem.SCHEMA_NAME)
@IdClass(ProblemHandle.class)
public class Problem {
public static final String ENTITY_NAME = "problem";
public static final String SCHEMA_NAME = "X";
public static final String TABLE_NAME = "PROBLEM";
@Id
@Column(name="id", nullable = false)
private Long id;
...
}我如何才能做到这一点,而不必改变模式,例如使用句柄?
发布于 2012-08-27 14:53:25
您有@Access(AccessType.PROPERTY),因此属性的名称来自get方法,而不是变量。你的get方法的名字是什么?
尝试删除@Access(AccessType.PROPERTY)
还有,你用的是什么版本?尝试使用2.4版本。
https://stackoverflow.com/questions/12131697
复制相似问题