Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Hibernate JPA/标准-在SetAttribute上选择(或多选)_Hibernate_Jpa_Criteria_Setattribute - Fatal编程技术网

Hibernate JPA/标准-在SetAttribute上选择(或多选)

Hibernate JPA/标准-在SetAttribute上选择(或多选),hibernate,jpa,criteria,setattribute,Hibernate,Jpa,Criteria,Setattribute,我在尝试使用JPA标准时感到非常沮丧(我使用的是Hibernate实现)。。我想在select位于一组对象上的位置进行查询,但无法使其正常工作 这是我的密码: public List<Object> findAllTypeGroupes(){ CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<Object> criteriaQuery =

我在尝试使用JPA标准时感到非常沮丧(我使用的是Hibernate实现)。。我想在select位于一组对象上的位置进行查询,但无法使其正常工作

这是我的密码:

public List<Object> findAllTypeGroupes(){
    CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
    CriteriaQuery<Object> criteriaQuery =  criteriaBuilder.createQuery(Object.class);

    /* FROM */
    Root<Contact> contactRoot = criteriaQuery.from(Contact.class);
    /* SELECT */
    criteriaQuery.select( contactRoot.get( Contact_.groupes ) );

    return entityManager.createQuery(criteriaQuery).getResultList();
}

@StaticMetamodel(Contact.class)
public abstract class Contact_ {
    public static volatile SingularAttribute<Contact, Integer> contactId;
    public static volatile SetAttribute<Contact, TypeGroupe> groupes;
}
正如您在第一次昏迷之后看到的:“.As col_1_0_”,这不是一个有效的SQL查询

所以我真的不知道该怎么做。。在我的对象联系人上,所有字段都是急切的,因为当我加载联系人时,我关闭了事务,因此对象被分离,不允许我加载数据。但我有一个“搜索屏幕”,其中显示了所有联系人字段的子集。。因此,为了显著提高性能,我愿意对这部分进行特定查询,只加载我需要的内容,而不是“从联系人中选择”


有人知道发生了什么事以及如何解决我的问题吗?

听起来很麻烦。使用JPA是你唯一的选择吗?我不清楚这个查询的目的。是否要检索给定联系人的组?这就是你想做的吗?否则,你能说明你的问题的目的吗?@Lukas Eder:是的,JPA是我项目中的一项要求@Edalorzo:嗯,不是真的,我想检索所有联系人的组以及其他几个字段,比如联系人的id、名字和姓氏。因此,基本上,对于每个联系人,我需要其id、名字、姓氏和组(其中组是一组)。。因此,我希望得到一个列表,其中Object[0]=id(整数)、Object[1]=first name(字符串)、Object[2]=las name(字符串)和Object[3]=groups(Set)听起来很麻烦。使用JPA是你唯一的选择吗?我不清楚这个查询的目的。是否要检索给定联系人的组?这就是你想做的吗?否则,你能说明你的问题的目的吗?@Lukas Eder:是的,JPA是我项目中的一项要求@Edalorzo:嗯,不是真的,我想检索所有联系人的组以及其他几个字段,比如联系人的id、名字和姓氏。因此,基本上,对于每个联系人,我需要其id、名字、姓氏和组(其中组是一组)。。因此,我希望得到一个列表,其中Object[0]=id(整数)、Object[1]=first name(字符串)、Object[2]=las name(字符串)和Object[3]=groups(Set)
public List<Object[]> findAllWrapperByCriteria(ContactCriteria criteria){
    CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
    CriteriaQuery<Object[]> criteriaQuery = criteriaBuilder.createQuery(Object[].class);

    /* FROM */
    Root<Contact> contactRoot = criteriaQuery.from(Contact.class);

    criteriaQuery.multiselect( contactRoot.get( Contact_.contactId ), contactRoot.get( Contact_.groupes ) );


    return entityManager.createQuery(criteriaQuery).getResultList();
}
select contact0_.CONTACT_ID as col_0_0_, . as col_1_0_, typegroupe2_.TYPE_GROUPE_ID as TYPE1_6_, typegroupe2_.LIBELLE as LIBELLE6_, typegroupe2_.MUT_TS as MUT3_6_, typegroupe2_.MUT_USER as MUT4_6_, typegroupe2_.REMARQUE as REMARQUE6_, typegroupe2_.VISIBLE as VISIBLE6_ from CONTACT contact0_ inner join CONTACT_GROUPE groupes1_ on contact0_.CONTACT_ID=groupes1_.CONTACT_ID inner join TYPE_GROUPE typegroupe2_ on groupes1_.GROUPE_TYPE_GROUPE_ID=typegroupe2_.TYPE_GROUPE_ID