小编Gae*_*ano的帖子

SQL查询 - 使用DISTINCT的成本

使用DISTINCT对SQL查询执行计划的查询成本有很大影响吗?

在一个包含100,000行的表中,两者之间会有什么不同:

select * from TABLE
Run Code Online (Sandbox Code Playgroud)

和 

select distinct(*) from TABLE 
Run Code Online (Sandbox Code Playgroud)

以毫秒计? 

sql database distinct query-optimization

6
推荐指数
1
解决办法
3851
查看次数

Join 和 JoinSet 之间的 JPA 差异

正如标题所说,我想知道这两种方法之间的区别。

具体来说,我想知道以下之间的区别:

join(String arg) AND joinSet(String arg)

因为即使属性是一个集合,我也可以使用join(String arg),但不是相反,即在不是集合的属性上使用joinSet(String arg)

谢谢。

java jpa criteria-api jpa-2.0 jakarta-ee

5
推荐指数
1
解决办法
2841
查看次数

JPA元模型生成缺少属性

我正在使用 JPA 元模型生成 http://relation.to/Bloggers/HibernateStaticMetamodelGeneratorAnnotationProcessor 能够使用属性名称执行条件查询。

我正在通过 ANT 和 hibernate-jpamodelgen-4.3.5.Final http://mvnrepository.com/artifact/org.hibernate/hibernate-jpamodelgen/4.3.5.Final生成元模型类

问题是:如果我有这样的实体:

@Entity public class Order 
{
    @Id 
    Integer id;
    @ManyToOne 
    Customer customer;
    @OneToMany 
    Set<Item> items;
    BigDecimal totalCost;
    java.net.URI uri;
    ...
}
Run Code Online (Sandbox Code Playgroud)

与二传手和一切......

生成的元模型将是这样的:

@StaticMetamodel(Order.class)
public class Order_ {
    public static volatile SingularAttribute<Order, Integer> id;
    public static volatile SingularAttribute<Order, Customer> customer;
    public static volatile SetAttribute<Order, Item> items;
    public static volatile SingularAttribute<Order, BigDecimal> totalCost;
}
Run Code Online (Sandbox Code Playgroud)

因此生成的类中缺少URI

也许是因为缺少 java.net.URI 的标准无属性构造函数?

谢谢!

hibernate jpa criteria metamodel criteriaquery

0
推荐指数
1
解决办法
1071
查看次数

使用JPA2在TypedQuery上设置超时

我想在javax.persistence.TypedQuery上设置超时.

我发现这个简单的方法:

TypedQuery<Foo> query = ... ;
query.setHint("javax.persistence.query.timeout", 1000);
query.getReturnList();
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用,它只是被忽略了.

PRO JPA 2书中:

"不幸的是,设置查询超时不是可移植行为.它可能不受所有数据库平台支持,也不是所有持久性提供程序都支持的要求.因此,必须为三种情况准备要启用查询超时的应用程序.

首先是该属性被默默地忽略并且没有效果.

第二个是启用该属性,并且中止任何超过指定超时值的选择,更新或删除操作,并抛出QueryTimeoutException.可以处理此异常,并且不会导致任何活动事务被标记为回滚.

第三种情况是该属性已启用,但在执行此操作时,数据库会在超出超时时强制执行事务回滚.在这种情况下,将抛出PersistenceException并将事务标记为回滚.通常,如果启用,则应编写应用程序以处理QueryTimeoutException,但如果超出超时并且不抛出异常,则不应该失败."

有没有人知道在TypedQuery上指定超时的任何其他方法?

或者我怎样才能使这个"提示"起作用?

谢谢

编辑:Oracle 11.2.0.4.0和PostgreSql 9.2.9与JPA 2.1/Hibernate

java jpa java-ee criteria-api jpa-2.1

0
推荐指数
1
解决办法
4233
查看次数