标签: hibernate-criteria

org.hibernate.QueryException:无法解析property:filename

我正在使用Hibernate Criteriafilename我的表中的列获取值contaque_recording_log.

但是当我得到结果时,它会引发异常

org.hibernate.QueryException:无法解析属性:filename of:com.contaque.hibernateTableMappings.contaque_recording_log

我的表bean是:

import java.util.Date;
import javax.persistence.*;


@Entity
@Table(name="contaque_recording_log")
public class contaque_recording_log implements java.io.Serializable{
    private static final long serialVersionUID = 1111222233334404L;
    @Id
    @Column(name="logId", insertable=true, updatable=true, unique=false)
    private Integer logId;

    @Column(name="userName", insertable=true, updatable=true, unique=false)
    private String userName;

    @Column(name="ext", insertable=true, updatable=true, unique=false)
    private String ext;

    @Column(name="phoneNumber", insertable=true, updatable=true, unique=false)
    private String phoneNumber;

    @Column(name="callerId", insertable=true, updatable=true, unique=false)
    private String callerId;

    @Column(name="fileName", insertable=true, updatable=true, unique=false)
    private String fileName;


    @Column(name="campName", insertable=true, updatable=true, unique=false)
    private String campName;

    @Temporal(javax.persistence.TemporalType.TIMESTAMP) …
Run Code Online (Sandbox Code Playgroud)

java hibernate hibernateexception hibernate-criteria oracle-sqldeveloper

28
推荐指数
1
解决办法
11万
查看次数

Hibernate Criteria将查询加到一对多

我有一个Cat类和一个Owner类.一只猫有一个主人,但主人可以有很多猫.我想要查询的是让所有拥有蓝眼睛的猫的主人.

class Cat {
    Owner owner; //referenced from Owner.id
    String eyeColor;
}

class Owner {
    List<Cat> catList;
}
Run Code Online (Sandbox Code Playgroud)

我尝试了一些代码,但我真的不知道该怎么做.

Criteria criteria = getCurrentSession().createCriteria(cat.getClass(), "cat");
criteria.createAlias("cat.owner", "owner");    
criteria.add(Restrictions.eq("cat.eyeColor", "blue");
Run Code Online (Sandbox Code Playgroud)

hibernate hibernate-criteria

25
推荐指数
1
解决办法
4万
查看次数

使用Hibernate的标准和预测来选择多个不同的列

使用Hibernate的Criteria,我想执行相当于:

select distinct uspscity, state from citycomplete where USPSCITY = 'HOUSTON'
Run Code Online (Sandbox Code Playgroud)

我认为做以下操作会产生我想要的结果:

ProjectionList projList = new ProjectionList();
projList.add(Projections.distinct(Projections.property("id.state")));
projList.add(Projections.distinct(Projections.property("id.uspsCity")));
criteria.setProjection(projList);
Run Code Online (Sandbox Code Playgroud)

但是,这实际上做的是执行类似的事情:

select distinct uspscity, distinct state from citycomplete where USPSCITY = 'HOUSTON'
Run Code Online (Sandbox Code Playgroud)

显然,这会引发错误.

除了不使用Criteria之外,还有解决方案吗?

谢谢,

布兰登

sql hibernate criteria distinct hibernate-criteria

23
推荐指数
1
解决办法
4万
查看次数

如何根据特定订单订购hibernate的结果

我需要发送一个查询来检索具有特定字符组的值,如下所示:

假设我对'XX'感兴趣,所以它应该搜索其值以'XX'开头或具有'XX'(空格XX)的任何字段.例如XXCDEF,PD XXRF并且CMKJIEK XX是有效的结果.

我有以下查询 返回正确的结果,但我需要以一种 方式对它们进行排序,它首先返回那些XX在开头然后返回其他结果.如下:

XXABCD
XXPLER
XXRFKF
AB XXAB
CD XXCD
ZZ XXOI
POLO XX
Run Code Online (Sandbox Code Playgroud)

Criteria criteria = session.createCriteria(Name.class, "name")
                .add(Restrictions.disjunction()
                     .add(Restrictions.ilike("name.fname", fname + "%"))
                     .add(Restrictions.ilike("name.fname", "%" + " " + fname + "%"))
                    )
                .setProjection(Projections.property("name.fname").as("fname"));
        List<String> names = (List<String>) criteria.list();
Run Code Online (Sandbox Code Playgroud)

java hibernate hibernate-criteria

22
推荐指数
1
解决办法
1万
查看次数

Criteria中的setResultTransformer

标准API中setResultTransformer方法的用途是什么?有人可以用一个简单的例子来解释这个吗 我读了javadocs,但我无法清楚地理解它们.

问候,

hibernate criteria hibernate-criteria

21
推荐指数
2
解决办法
4万
查看次数

如何使用Hibernate检索一组成员对象?

这个问题是跟进我之前的问题.我需要检索复杂类的列表.每个都有几个集合,只应检索其中的特定数量.我已经读完了这些问题的答案1,2,但他们没有解决我的问题.

我需要查找特定群组中位于特定位置的学生列表,以及他们在其地址中的电话号码.我还需要显示每个学生到特定坐标的距离.

以下代码工作正常,唯一的问题是我无法检索对象列表,例如电子邮件列表,组列表和每个学生的电话列表.

@Entity
public class Student implements java.io.Serializable {

    private static final long serialVersionUID = -23949494858373847L;
    @Id
    @GeneratedValue
    String id;
    String name;
    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(name = "student_groups", joinColumns = { @JoinColumn(name = "id", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "groupId", nullable = false, updatable = false) })
    Set<Group> groups = new HashSet<Group>(0);
    ..
}


@Entity
public class Address implements java.io.Serializable {

    private static …
Run Code Online (Sandbox Code Playgroud)

java hibernate hibernate-criteria

19
推荐指数
2
解决办法
1800
查看次数

Hibernate标准:如何通过两列连接排序?

我有一个Person表,它有两列:first_name和last_name.Person类有两个相应的字段:firstName和lastName.现在我正在使用条件api并尝试基于连接的这两列创建订单.可能吗?或者它只能通过hql实现?

java hibernate hql hibernate-criteria

18
推荐指数
1
解决办法
4万
查看次数

在JPA 2中使用预测

我需要转换Hibernate条件查询,如下所示

curList = session.createCriteria(Islem.class)
                    .createAlias("workingDay", "d")
                    .setProjection(Projections.sum("amount"))
                    .add(Restrictions.eq("currency", CURRENCY))
                    .add(Restrictions.eq("product", product))
                    .add(Restrictions.ne("status", INACTIVE))
                    .add(Restrictions.eq("d.status", ACTIVE))
                    .getResultList();
Run Code Online (Sandbox Code Playgroud)

然而在JPA(2)中,我不知道如何实现投影 - 在这种情况下 - 总和.奇怪的是,Hibernate和JPA(甚至是Hibernate JPA 2)在标准查询中存在巨大差异.

我开始

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Islem> cq = cb.createQuery(Islem.class);
Root<Islem> isr = cq.from(Islem.class);
cq.select(isr).where(cb.equal(isr.get("currency"), CURRENCY), 
                     cb.notEqual(isr.get("status"), INACTIVE),
                     cb.equal(isr.get("product"), product));
Run Code Online (Sandbox Code Playgroud)

但是不知道如何在这里实现投影既不是别名

hibernate projection criteria-api hibernate-criteria jpa-2.0

18
推荐指数
1
解决办法
2万
查看次数

Hibernate Restrictions.in vs. Disjunction

除了更少的代码之外,使用Hibernate Criteria API构建IN子句的以下两种方法之间的区别是什么?是否存在性能问题?我缺少的检索中是否有一些逻辑?就返回的行而言,它们似乎都执行相同的操作.

Disjunction disj = Restrictions.disjunction();
for (String value : stringArray) {
     disj.add(Restrictions.eq("code", value));
}
where.add(disj);
Run Code Online (Sandbox Code Playgroud)

VS.

Restrictions.in("code", stringArray);
Run Code Online (Sandbox Code Playgroud)

我问的原因是因为我在前者存在的情况下重构遗留代码,但我期待后者.如果它们都是相同的,我将单独保留遗留代码.

hibernate restrictions hibernate-criteria

15
推荐指数
2
解决办法
4万
查看次数

使用Hibernate Criteria和DISTINCT_ROOT_ENTITY进行分页

我已经使用以下代码实现了分页:

public Paginacao<Anuncio> consultarPaginado(int pagina, Integer cidadeId) {

            Criteria criteria = this.sessionFactory.getCurrentSession().createCriteria(Anuncio.class);      
            criteria.add(Restrictions.eq("ativo", true));
            criteria.add(Restrictions.eq("statusLiberacao", AnunciosUtil.STATUS_ANUNCIO_LIBERADO));
            criteria.add(Restrictions.eq("statusVendaAnuncio", AnunciosUtil.STATUS_VENDA_ANUNCIO_DISPONIVEL));

            if (cidadeId != null) {
                criteria.add(Restrictions.eq("cidade.id", cidadeId));
            }

            criteria.addOrder(Order.desc("dataPostagem"));
            criteria.setProjection(Projections.rowCount());

            Long count = (Long) criteria.uniqueResult();

            Paginacao<Anuncio> paginacao = new Paginacao<Anuncio>();
            int qtdPaginas = (count.intValue() / 7) + 1;

            paginacao.setQtdPaginas(qtdPaginas);

            criteria.setProjection(null);// reseta a criteria sem a projeção
            criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

            if (pagina > qtdPaginas) {
                pagina = qtdPaginas;
            }
            pagina = pagina - 1;
            criteria.setFirstResult(pagina * ConstantesGenericas.MAXIMO_OBJETOS_RETORNADOS);
            criteria.setMaxResults(ConstantesGenericas.MAXIMO_OBJETOS_RETORNADOS);

            paginacao.setRegistros(criteria.list());

            return paginacao;
        }
Run Code Online (Sandbox Code Playgroud)

当我手动构建SQL查询并将其提交到数据库时,我得到8个结果.但是,当我尝试上面的代码时,在将ResultTransformer设置为DISTINCT_ROOT_ENTITY之前,获得8个结果(没有区别),并在设置之后得到4个结果.但是我应该得到8个结果(使用DISTINCT),因为当我手动构建SQL而没有不同时,我得到11个结果,当我使用DISTINCT时,我得到了正确的结果.

上面的代码有什么问题?

hibernate hibernate-criteria

15
推荐指数
3
解决办法
2万
查看次数