标签: criteria

NHibernate HQL vs CriteriaAPI vs QueryOver vs Linq.性能

hql和criteriaApi和QueryOver之间的性能差异是什么?是否存在一个比另一个更快或更慢的情况?

编辑:我用QueryOver和Linq扩展了问题.

=============================================

好吧,我不确定哪个回复标记为答案所以我将标记最多VoteUp的帖子.我不知道.这实际上是一个问题,而不是一个问题.

nhibernate performance criteria icriteria

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

带有JPA Criteria API的select子句中的子查询

我正在尝试在标题中插入一个子查询,就像在这个简单的SQL中一样:

SELECT id, name, (select count(*) from item) from item
Run Code Online (Sandbox Code Playgroud)

这显然只是一个模拟查询只是为了说明我的观点.(关键是获取查询返回的每个项目的最后一张发票.)

我试过这个:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> c = cb.createTupleQuery();
Root<Item> item= c.from(Item.class);

Subquery<Long> scount = c.subquery(Long.class);
Root<Item> sarticolo = scount.from(Item.class);
scount.select(cb.count(sitem));

c.multiselect(item.get("id"),item.get("nome"), scount);

Query q = em.createQuery(c);
q.setMaxResults(100);
List<Tuple> result = q.getResultList();

for(Tuple t: result){
  System.out.println(t.get(0) + ", " + t.get(1) + ", " + t.get(2));
}
Run Code Online (Sandbox Code Playgroud)

但我只得到:

java.lang.IllegalStateException:子查询不能出现在select子句中

我怎样才能得到类似的结果?

select jpa criteria subquery

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

如何在JPA 2.0中使用where子句编写MAX查询?

我正在使用JPA 2.0.Hibernate 4.1.0.Final和Java 6.如何从以下psuedo-SQL编写JPA查询?

select max(e.dateProcessed) from Event e where e.org = myOrg
Run Code Online (Sandbox Code Playgroud)

我的域对象如下所示:

@GenericGenerator(name = "uuid-strategy", strategy = "org.mainco.subco.core.util.subcoUUIDGenerator")
@Entity
@Table(name = "sb__event",
    uniqueConstraints = { @UniqueConstraint(columnNames={"EVENT_ID"}) }
)
public class Event
{

    @Id
    @Column(name = "ID")
    @GeneratedValue(generator = "uuid-strategy")
    private String id;

    @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.REMOVE})
    @JoinColumn(name = "ORGANIZATION_ID", nullable = false, updatable = true)
    private Organization org;

    @Column(name = "DATE_PROCESSED")
    @NotNull
    private java.util.Date dateProcessed;
Run Code Online (Sandbox Code Playgroud)

我知道CriteriaBuilder.greatest参与其中,但我无法弄清楚如何编写查询.这将返回与组织匹配的所有事件对象,但这就是我所获得的.

final CriteriaBuilder builder = m_entityManager.getCriteriaBuilder();
final CriteriaQuery<Event> criteria = builder.createQuery(Event.class); …
Run Code Online (Sandbox Code Playgroud)

hibernate jpa criteria max jpa-2.0

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

JPA CriteriaBuilder子查询多选

我在jpa中有关于Subquery类的问题.我需要创建带有两个自定义字段的子查询,但是子查询没有多选方法,而select方法有表达式输入参数(在查询中这是选择)和constact方法不合适.

关于加入子查询结果我也有疑问,有可能吗?怎么样?

我有:

连锁活动

public class Chain {
@Id
@Column(name = "chain_id")
@GeneratedValue(generator = "seq_cha_id", strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name = "seq_cha_id", sequenceName = "SEQ_CHA_ID", allocationSize = 1)
private Long id;
@Column(name = "user_id")
private Long userId;
@Column(name = "operator_id")
private Long operatorId;

@Column(name = "subject")
private String subject;

@OneToMany(fetch = FetchType.LAZY, mappedBy = "chain")
private List<Message> messages;
@Column(name = "status")
private Status status;

public Long getOperatorId() {

    return operatorId;
}

public void setOperatorId(Long operatorId) {
    this.operatorId = operatorId;
}

public …
Run Code Online (Sandbox Code Playgroud)

java jpa criteria criteria-api

15
推荐指数
1
解决办法
5110
查看次数

有没有简单的方法将Criteria转换为HQL?

我已经发布了一个问题,前几天有关查询与该标准API集合,所有我看到的是我想的东西是不可能与标准答案后,有在NHibernate的局势中的错误,并在休眠

我使用DetachedCriteria将所有标准放在一起,列表真的很长.链的最后一个循环是错误的标准,所以我需要将所有的detachedcriteria更改为HQL.

所以我的问题是有没有任何工具或方法将Criteria转换为HQL.

要么

有没有办法让Criteria和Hql一起工作?

关于nhibernate中的bug的文章

.net asp.net nhibernate hql criteria

14
推荐指数
1
解决办法
7302
查看次数

Criteria API返回的结果集太小

这怎么可能,我必须遵循标准

Criteria criteria = getSession().createCriteria(c);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
criteria.add(Restrictions.eq("active",true));
List list = criteria.list();

列表的大小现在是20.如果我在条件中添加最大结果,

Criteria criteria = getSession().createCriteria(c);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
criteria.setMaxResults(90);
criteria.add(Restrictions.eq("active",true));
List list = criteria.list();
Run Code Online (Sandbox Code Playgroud)

..现在列表的大小是18!

在定义最大结果后,我不明白结果集大小如何更小,因为行数小于定义的最大值.这肯定看起来像一个bug,或者还有一些我不知道的hibernate奇怪的方面?


如果您正在寻找这个问题的答案,请务必阅读接受的答案及其评论.

java hibernate criteria hibernate-criteria

14
推荐指数
1
解决办法
5432
查看次数

如何使用NHibernate Criteria API获取"top n"?

如何使用NHibernate Criteria API获取"top n"?理想情况下,我想使用分离标准.

c# nhibernate criteria icriteria

14
推荐指数
1
解决办法
8291
查看次数

在hibernate API中的ElementCollection createAlias

有谁知道是否以及如何使用hibernate标准API编写以下问题的解决方案(使用JPA API编写)?

更具体地说,我有一个Discussion实体,其中包含一个参与者列表(这是一个用户名列表):

@ElementCollection
@Column(name = "user_name")
@CollectionTable(name = "DISCUSSION_USER", joinColumns = @JoinColumn(name = "DISCUSSION_ID"))
@OrderColumn(name = "ORDER_INDEX")
private List<String> participants = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

现在我需要检索给定用户名是参与者的所有讨论.

如果我为参与者创建了一个实体,这将是直截了当的:

    Criteria crit = getSession().createCriteria(Discussion.class);
    crit.createAlias("participants", "p");
    crit.add(Restrictions.eq("p.userName", portalUsername));
Run Code Online (Sandbox Code Playgroud)

但是我无法用非实体创建别名......

java hibernate criteria jpa-2.0

14
推荐指数
2
解决办法
6273
查看次数

Hibernate:具有多对多连接表的标准?

考虑以下两种关系:

@Entity class Foo {
    @Id id;

    @ManyToMany
    @JoinTable(name = "ATag", 
         joinColumns = @JoinColumn(name = "foo_id"),
         inverseJoinColumns = @JoinColumn(name = "tag_id"))
    Set<Tag> tags;
}

@Entity class Tag {
    @Id Long id;
    String name;
}
Run Code Online (Sandbox Code Playgroud)

连接表ATag没有对应的实体类.现在,我想要使用名为'tag1'的Tag获取所有Foo实例,是否可以仅使用Criteria?

子查询可能有用,但是,我不能为不存在的类ATag.class创建DetachedCriteria.

hibernate criteria

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

Spring MongoDB查询文件,如果天差为x天

我有一个有两个日期字段的集合,我试图查询所有相差15天的记录:

{
   "_id" : "someid",
   "factoryNumber" : 123,
   "factoryName" : "some factory name",
   "visitType" : "audit",
   "personelId" : "somePersonel",
   "lastVisit": ISODate("2018-10-30T00:00:00.000+0000"),
   "acceptedDate" : ISODate("2018-11-16T00:00:00.000+0000")
}
Run Code Online (Sandbox Code Playgroud)

现在在某些情况下acceptedDate不会出现,所以我需要根据当前日期对其进行评估.不完全确定如何在spring中编写这种类型的查询以获得期望的结果.

    Criteria.where("acceptedDate"). 
(is 15 days past last visit or current date if last visit not present)
Run Code Online (Sandbox Code Playgroud)

java criteria mongodb spring-data-mongodb spring-boot

14
推荐指数
1
解决办法
737
查看次数