Tag: hql

HQL查询是否始终命中数据库并获得结果?

我正在经历hibernate以及何时使用Criteria vs HQL ,我的理解是使用Hibernate,每当我们在两个实例中通过Criteria或HQL查询数据库时,hibernate将得到结果集并放入内存然后当我们调用它时再次查询,数据将从内存中获取而不是点击该数据库,我的理解是否正确? 另外正如您从下面提到的评论中看到的那样,有人建议Hibernate Criteria会从会话中获取数据,而HQL总会进入并命中数据库,因此对HQL查询的任何数量的多次调用都将进入并命中数据库,如果这是那么HQL导致的问题多于解决问题。 请对此提出建议,因为我对这种情况有点困惑。 参考问题

Hibernate hql,在同一个查询中执行多个更新语句

我想在hibernate Hql中的同一个查询中执行多个更新语句。 如下: hql = ” update Table1 set prob1=null where id=:id1; ” + ” delete from Table2 where id =:id2 “; … query.executeUpdate(); 在同一个executeUpdate调用中,我想更新Table1中的记录并从Table2中删除记录。 那可能吗?

如何使用hibernate在spring boot中实现分页

我正在使用带有hibernate的spring boot,我想在我的项目中使用分页。 我在谷歌搜索并看到了很多例子,但我无法在我的项目中实现它。 我希望如果我在我的url中传递1,那么应该有10个结果,如果我传递2,那么接下来的10个结果应该会出现,依此类推。 这是我的道 @Transactional public interface PostDao extends CrudRepository{ @Query(getAllPostsByRank) List getAllPostsByRank(); final String getAllPostsByRank= “from Post order by value DESC”; } 这是我的控制器 @RequestMapping(“/top”) @ResponseBody public List getAllPosts(HttpServletRequest req, HttpServletResponse res) throws ServletException { List postobj = postDao.getAllPostsByRank(); return postobj; } 这是我的url: http://localhost:8888/v1.0/post/top/1 请建议。

使用JPQL / HQL在JPA中对连接提取集合进行排序

鉴于以下JPQL语句,我如何修改它,以便结果列表中的小猫按其age属性排序? SELECT c FROM Cat c left join fetch c.kittens WHERE c.id = :id 我尝试了多个approches,但没有任何运气。 这基本上是我想要做的,但它不起作用: SELECT c FROM Cat c left join fetch c.kittens k WHERE c.id = :id ORDER BY k.age

HQL:使用ManyToMany进行Hibernate查询

我有一个关于HQL查询和hibernate的问题。 我有一个用户类和一个角色类。 用户可以拥有许多角色。 所以我有一个像这样的ManyToMany版本: 在用户类中: @ManyToMany(fetch = FetchType.LAZY) @oinTable(name = “PORTAIL_USERROLE”, joinColumns = { @JoinColumn(name = “USERID”, nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = “ROLE”, nullable = false, updatable = false) }) public Set getPortailroles() { return this.portailroles; } 在角色类中: @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = “PORTAIL_USERROLE”, joinColumns = { @JoinColumn(name […]

java hibernate:在多态hql查询中选择discriminator列

在hibernate中,我想选择鉴别器值。 就像是 select discriminator, id, name, age from Animal 我的想法是将此查询的结果发送到客户端,以便我可以根据鉴别器列(即猫,狗,大象等)的值显示不同的图标。 那可能吗? 怎么样?

简单的hql命名查询,它使用内连接

我想在我的域/实体对象中做这样的事情: @Entity @NamedQueries({ @NamedQuery(name=”favouriteCats”, query=”from Cat c inner join on UserCat uc where uc.isFavourtie = true and uc.user = :user”) }) public final class Cat extends BaseTable 所以在我的服务层我可以这样做: Query query = session.getNamedQuery(“favouriteCats”) query.setParameter(0, MyUser); return query.list(); 但是,我在HQL中的语法是不正确的 – 在我看到官方文档的十分钟后我决定放弃并在这里问……? 我的usercat表是这样连接的: @ManyToOne(cascade = CascadeType.MERGE) @JoinColumn(name=”cat_fk”, insertable=false, updatable=false) private cat sql就是这样,它在我的db命令提示符下工作正常: select c.* from cat as c […]

使用HQL的新对象 – StandardAnsiSqlAggregationFunctions上的NPE,确定JdbcTypeCode

我知道这已被问了很多 ,但我似乎遇到了不同的问题。 我看到Hibernate中存在一个与SumFunction无关的错误 ,忽略了自定义用户类型,但据我所知,我没有使用自定义用户类型。 我基本上是在尝试创建一个新对象,它是现有映射bean的汇总,但是我收到了针对某些Hibernate方言函数的NullPointerException 。 我尝试使用Double和BigDecimal作为我的value字段类型,但两者都在部署时提供了相同的错误消息。 请帮忙! 这是一些代码: 映射的bean: @Entity @Table(name = “v_summary_report”) public class SummaryReportView implements java.io.Serializable { private static final long serialVersionUID = 1L; @Id @Column(name = “id”) private String id; @Column(name = “region”) private String region; @Column(name = “market”) private String market; @Column(name = “proj_year_month”) private String projectionYearMonth; @OneToOne(cascade={CascadeType.DETACH}) @JoinColumn(name=”attrib_id”, referencedColumnName=”attrib_id”) […]

使用hql表达式而不是Criteria进行动态HQL查询?

我试图编写一个部分动态的HQL查询,而不是出于各种原因求助于Criteria API。 我想知道是否有一种简单的方法可以使用HQL表达式来限制where限制。 例如,这是原始查询工作正常: SELECT customer FROM Customer as customer INNER JOIN customer.profile as profile WHERE profile.status IN :statusCodes AND profile.orgId IN :orgIds StatusCodes是一个字符串列表,orgIds是一个整数列表。 但是,任何一个都是可选的,不应该限制传递null而不是集合。 我试图这样做: SELECT customer FROM Customer as customer INNER JOIN customer.profile as profile WHERE (:statusCodes IS NULL OR profile.status IN :statusCodes) AND (:orgIds IS NULL OR profile.orgId IN :orgIds) 不幸的是,这不起作用,但是有没有其他方法可以使用,使用不同的表达式或传入默认值? 编辑:只是要清楚我正在寻找一种使用NamedQuery的方法,而不是以任何方式动态构建查询。 […]

Hibernate使用错误的表名来表达具有三级inheritance的表达式

在我们的项目中,我们有不同类别呈现的不同用户类型。 我们有一个BaseEntity类作为@MappedSuperclass。 当我们尝试使用带有InheritanceType.JOINED的用户类时,hibernate会创建一个我们认为错误的sql。 基本实体: @MappedSuperclass public abstract class BaseEntity implements java.io.Serializable { private Integer id; private Date createdDate = new Date(); public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Temporal(TemporalType.TIMESTAMP) @Column(name = “CREATED_DATE”, nullable = true) public Date getCreatedDate() { return createdDate; } public void setCreatedDate(Date createdDate) […]