Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用组合键的错误条件.list_Java_Hibernate_Criteria - Fatal编程技术网

Java 使用组合键的错误条件.list

Java 使用组合键的错误条件.list,java,hibernate,criteria,Java,Hibernate,Criteria,实体 //主键 查询正常:如果实例pk setter @Embeddable public class PK implements Serializable { private static final long serialVersionUID = -5441836698300495848L; @javax.persistence.Column(name = "id_titulo") private Long titulo_id; @javax.persis

实体

//主键

查询正常:如果实例pk setter

@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
}
查询错误

  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();
控制台中出错:*无法解析属性:id\u empresa of:Entidade*


只需按公司搜索,如果使用约束,则返回上述错误。

标准中,如您所知,必须使用类成员的名称,而不是数据库中字段的名称。但是
@AttributeOverride
注释并没有在
PK
类中重写此属性,而只是在
Entidade
类中重写。因此,必须使用在
PK
类中声明的属性名称,即
id.empresa\u id

因此,您的代码应该是:

   Criteria criteria = novoCriteria();
    criteria.createAlias("id", "id");
    criteria.add(Restrictions.eq("id.id_empresa", 2L));
    criteria.list();

在我的一个项目中,我可以重现您的错误,并可以使用可嵌入类中参数的名称来解决它。我认为它也应该适用于您。

似乎
id\u empresa
是列名。您需要将其替换为类
Entidade
->
id.javaField
(可能是
id.pk
,但我不知道
EmbeddedId
有什么作用)将
pk
类添加到您的问题中,以便我们可以检查您是否使用了正确的语法来添加限制。我首先犯了一个错误,因为我没有看到
@AttributeOverride
,所以我决定删除我的答案。但是现在,我认为这个解决方案是正确的。告诉我你是否能用这个技巧解决你的问题。
   Criteria criteria = novoCriteria();
    criteria.createAlias("id", "id");
    criteria.add(Restrictions.eq("id.id_empresa", 2L));
    criteria.list();
Criteria criteria = novoCriteria();
    criteria.createAlias("id", "id");
    criteria.add(Restrictions.eq("id.empresa_id", 2L));
    criteria.list();