@javax.persistence.Entity
@javax.persistence.Table(name = "entidade")
public class Entidade {
private static final long serialVersionUID = -6831078183847196839L;
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "id_titulo", column = @Column(name = "titulo_id", nullable = false)),
@AttributeOverride(name = "id_empresa", column = @Column(name = "empresa_id", nullable = false)) })
private PK pk;
//getter//setter
}
// PK
@Embeddable
public class PK implements Serializable {
private static final long serialVersionUID = -5441836698300495848L;
@javax.persistence.Column(name = "id_titulo")
private Long titulo_id;
@javax.persistence.Column(name = "id_empresa")
private Long empresa_id;
//getter // setter
}
查詢確定:如果實例的PK二傳手
Criteria criteria = novoCriteria();
criteria.createAlias("id", "id");
TituloPK pk = new TituloPK();
pk.setEmpresa(2L);
pk.setTitulo(6364L);
criteria.add(Restrictions.eq("id", pk));
criteria.list();
查詢錯誤
Criteria criteria = novoCriteria();
criteria.createAlias("id", "id");
criteria.add(Restrictions.eq("id.id_empresa", 2L));
criteria.list();
錯誤控制檯:*無法解析屬性:的id_empresa:Entidade *
只需要通過公司搜索,如果我用約束返回上面的錯誤。
看起來'id_empresa'是列名。你需要用類'Entidade' - >'id.javaField'(也許是'id.pk',但我不知道'EmbeddedId'的作用)的java字段替換它 –
將你的'PK'類添加到你的問題中我們可以檢查您是否使用正確的語法來添加限制。 – eternay