我有一个DB(Oracle)表中的时间戳列. 我正在使用Hibernate作为持久层来获取并将数据存储到DB. 我有一个需要在日期查询数据库的要求. 即从UI来看,用户通过日期,我需要根据此日期获取过滤数据. 如果交易列仅具有日期部分,我的查询返回正确的记录 当交易列带有时间戳值IE(日期 +时间)时,就会出现问题.然后这些值不会由查询返回. eg:说2010年10月23日在DB 5中有10个记录,其中有时间戳条目,5个不 所以我只返回的查询只有没有时间戳的5行. 现在,我知道我需要从时间戳提取日期,然后进行比较,以便我获得aprticular Date的所有记录,但我不知道它如何处理Hibernate并使用HQL 我使用的 java/hibernate中的查询如下 字符串hql ="从pojo中选择清除pojo. 查询查询= getSession().createquery(hql); QUERY.SETPARAMETER("日期",日期); 解决
以下是关于 hql 的编程技术问答
i具有一个称为Band的实体,带有属性List genres,流派是具有以下值的枚举:ALTERNATIVE_ROCK("Alternative Rock"), CLASSIC_ROCK("Classic Rock"), HARD_ROCK("Hard Rock"), HEAVY_METAL("Heavy Metal"),PROGRESSIVE_ROCK("Progressive Rock"); 我正在尝试创建一种使用List作为参数返回a List的方法,例如: public List listBandsPerGenres(List genres); ,但是我会尝试使用我尝试过的HQL查询的一些错误? 上面是我尝试过的一些HQL查询... Query q = getSession().createQuery("SELECT b FROM Band b JOIN FETCH b.genre
用户声明: @Entity public class User { @Id @GeneratedValue private Integer id; .... 模式声明: @Entity public class Pattern { @Id @GeneratedValue Integer id; ... userpatterndeclaration: public class UserPattern { @Id @GeneratedValue Integer id; @ManyToOne @JoinColumn(name = "user_id") User user; @ManyToOne @JoinColumn(name = "pattern_id") Pattern pattern; ... 请求数据库:
我面临执行标准弹簧data-jpa findAll查询的性能问题 当我检查日志时,我会看到以下语句: 2016-10-26 09:46:25,681 DEBUG [http-nio-8080-exec-1] CriteriaQueryImpl: Rendered criteria query -> select generatedAlias0 from Patient as generatedAlias0 order by generatedAlias0.id asc 2016-10-26 09:46:25,681 DEBUG [http-nio-8080-exec-1] CriteriaQueryImpl: Rendered criteria query -> select count(generatedAlias0) from Patient as generatedAlias0 2016-10-26 09:46:25,681 DEBUG [http-nio-8080-exe
一位新同事刚刚建议使用带注释(即@namedquery)的Hibernate中的命名HQL查询,而不是将HQL嵌入我们的xxxxxrepository类中. 我想知道的是,使用注释是否提供了任何优势,除了集中查询吗? 特别是,是否有一些性能获得,例如,由于查询仅在加载类而不是每次执行存储库方法时才解析一次? 解决方案 来自Pro EJB 3(Mike Keith): " ...我们建议尽可能地命名查询.持久性提供者通常会采取步骤将jpql的jpql命名为SQL作为应用程序的部署或初始化阶段的一部分." . 尽管这本书在JPA上,但一般建议适用于Hibernate.但是,由于Hibernate Caches解析了HQL/JPQL,因此您可能不会看到巨大的性能增长.使用命名查询的另一个优点是,它为您提供了在部署时间使用映射文件覆盖查询的选项,而无需重建您的应用程序;如果您需要调整生产查询,则有用. 其他解决方案 除了任何可能的性能增长外,我相信另一个优势
我一直在阅读一些Anwers,但我仍然感到困惑.为什么?因为您提到的差异与性能无关.它们与易于使用有关.(OBJETC(标准)和SQL(HQL)).但是我想知道出于某种原因,"标准"是否比HQL慢. 我在另一个Anwers 中读了这篇文章 " HQL和CriteriaQuery之间的性能有所不同,每次您使用CriteriaQuery启动查询时,它会为表名创建一个新的别名,该名称在任何DB的最后一个查询缓存中都不反映.这会导致这导致编译生成的SQL的开销,花费更多时间进行执行."由Varun Mehta. 这非常接近,但是!我在另一个网站上阅读(http://gary-rowe.com/agilestack/tag/hibernate/),这是Hibernate 3.3及以上(请阅读以下内容:9)Hibernate不再是这种情况,因为SQL生成的SQL是由标准接口不一致) 我已经进行了一些测试,试图找出差异,但两者都会生成Qry的差异,并且不会将其更改为表. 我
假设每个子类遗传关系的表加入2c_multipy_table_inheritance" rel =" noreferrer">在这里) 注意父类不是抽象 @Entity @Inheritance(strategy=InheritanceType.JOINED) public class Project { @Id private long id; // Other properties } @Entity @Table(name="LARGEPROJECT") public class LargeProject extends Project { private BigDecimal budget; } @Entity @Table(name="SMALLPROJECT") public class SmallProject extends Project { } 我有一个方案 我只需要检索父级.由于性能问题,我该怎么办运行
我有一个蜂巢桌,它将保存数十亿个记录,其时间序列数据,因此分区为每分钟.每分钟我们将拥有大约100万张记录. 我的桌子上有几个字段,VIN号(17个字符),状态(2个字符)...等等 所以我的问题是在表创建期间,如果我选择使用varchar(x)vs字符串,是否存在存储或性能问题, varchar的限制很少 /语言+类型 如果我们提供的不仅仅是" x"字符,它将静止地截断,因此 保持其字符串将是未来的证明. 非生成UDFS不能直接使用VARCHAR类型作为输入参数 或返回值.可以创建字符串UDF,而是 VARCHAR值将转换为字符串并传递到UDF. 要直接使用VARCHAR参数或返回VARCHAR值, 创建一个通用. 如果他们可能不支持VARCHAR,如果 依靠基于反射的方法来检索类型信息. 这包括一些Serde实现. 在存储和性能方面,我必须使用字符串而不是VARCHAR支付的费用是多少 解决方案 让我们尝试从API中的实现方式中理解: -
我正在使用以下代码来查询数据库: Query query = session.createQuery("from Trace where service = :service"); query.setParameter("service", clientRequest[0]); clientrequest [0]来自字符串数组,而服务变量是我的pojo中的字符串,映射到我的mysql数据库中的varchar(45). 运行此代码时,Hibernate将执行的SQL查询显示为: Hibernate: select trace0_.traceId as traceId0_, trace0_.service as service0_, trace0_.longitude as longitude0_, trace0_.latitude as latitude0_, trace0_.timestamp as timestamp0_ from trace trace0_ wh
以下是testingtable1中的数据,按日期按降序排序始终 BUYER_ID | ITEM_ID | CREATED_TIME ----------+-----------------+---------------------- 1345653 110909316904 2012-07-09 21:29:06 1345653 151851771618 2012-07-09 19:57:33 1345653 221065796761 2012-07-09 19:31:48 1345653 400307563710 2012-07-09 18:57:33 ,如果这是TestingTable2中的以下数据 USER_ID | PRODUCT_ID | LAST_TIME ---------+----------------+----------------------
我正在开始对NHIBERNATE的研究,我有问题无法解决,我想知道是否有人可以帮助我. 映射工作"正确",但是当我尝试进行分组和总和时,应用程序会返回以下错误: "无法解决属性:course.price of:persistence.poco.requestdetail" var criteria = session.CreateCriteria(typeof(RequestDetail)) .SetProjection( Projections.ProjectionList() .Add(Projections.RowCount(), "RowCount") .Add(Projections.Sum("Course.Price"), "Price") .Add(Projections.GroupProperty("Request"), "RequestId") ) .AddOrder(Order.Asc("RequestId")) .S
这是HQL: select A, B, count(*) as cnt from test_table group by A, B order by cnt desc; 样本输出如下: a1 | b1 | 5 a2 | b1 | 3 a1 | b2 | 2 a2 | b2 | 1 但是我想要的是在每组A组中进行order by,而预期的输出就像: a1 | b1 | 5 a1 | b2 | 2 a2 | b1 | 3 a2 | b2 | 1 任何人都可以给我一些想法,如何在一个 hql中解决这个问题?非常感谢! 解决方案 select A, B, count(*) as cnt from test_table group by A, B order by A, cnt desc; 其他解决方案 尝试此查询: 如果您只需要A的顺序: select A, B, count(*) as cnt from test_table gro
我有两个桌子,乐队和投票. band有一个名称和一个ID,投票有一个total_votes列和一个名为band_id指向band.id的外键. 我有很多选票,可以在各种日期保存.我想做的是找到每个频段的总_VOTES列的最大值.以下SQL查询工作: select b.name,max(v.total_votes) as total from band b, votes v where b.id=v.band_id group by b.name order by total desc; 我与之合作的系统使用了Hibernate.我想将SQL查询为HQL或Hibernate标准查询. 这很容易,我只是想念它吗?感谢您的任何帮助. 解决方案 在HQL中,您可以尝试一下: select band.name, max(vote.totalVotes) from Band band join band.votes vote group
我希望查询结果在一周的一天之前分组..就像星期一,星期二,星期三... 表中的列是时间戳字段,例如2011年12月12日..... 因此,我不在乎表中存在哪些日期一周中的每一天明智. 如何使用HQL/标准进行此查询? 是否有这样的内置子句可以在Hibernate(HQL/Criteria)中使用? 预先感谢. 解决方案 尝试这个: select dayofweek(dateField), count(*) from PersistentClass group by 1 其他解决方案 您是否尝试过'订单'条款? smth这样: FROM tableName as table ORDER BY table.dayOfWeek ASC 您以哪种形式存储数据?
我正在尝试在项目中实现分页. 使用Nhibernate的iQueryover语法时,如下所示,事情如预期的. public PagedResult ExecutePagedQuery(IQueryOver query) { SetPaging(query); var results = query.Future(); var count = query.ToRowCountQuery().FutureValue(); return new PagedResult() { TotalItemCount = count.Value, PageOfResults = results.ToList() }; } protected virtual void SetPa
我正在使用ASP.NET MVC 2和NHIBERNATE开发Web应用程序,并且我的页面中正在为数据(类别中的产品)进行分页,但是此数据是随机的,因此,我使用的是HQL语句链接此: string hql = "from Product p where p.Category.Id=:IdCategory order by rand()"; 它运行良好,但是当我分页时,有时相同的产品出现在第一个,第二等...页面,因为它是rand()的订单. 有什么方法可以按周期(时间内部)固定的随机订单?或任何解决方案? 解决方案 种子随机数生成器: order by rand(123) 我建议将会话分配的随机数作为种子.这样,该页面不会突然重新分配单个用户,但是每个用户的排序仍然不同. 其他解决方案 我不明白您为什么故意随机数据.如果您没有特定的顺序,为什么不只是按主键订购?
休眠分页问题 我有一个与冬眠分页有关的问题,在某种程度上已经在 中解释了这一点 在> 使用Hibernate的Scrollablersults缓慢阅读9000万张记录 hibernate-hql分页 分页和分类问题 在 详细信息 HQL查询来自应用程序: Query q = session.createQuery("from RequestDao r order by r.id desc"); q.setFirstResult(0); q.setMaxResults(50); 查询返回300万记录,而对于分页,我们仅设置了50个记录,分页页非常慢,因为在每次刷新中,我们都调用查询,该查询获得了300万记录,而在那些只有50个记录的记录中. 我的主要问题是 hql总是会遇到并列入数据库,或者它去点击会话或内存以查找数据,如果它每次都击中数据库并获取结果集,那么从性能的角度来看,这是非常
这是一个类似的问题: hql-hql-for页上标识符 P> 我正在尝试使用HQL实现分页.我有一个PostgreSQL数据库. int elementsPerBlock = 10; int page = 2; //offset = 2*10 String sqlQuery = "FROM Messages AS msg " + " LEFT JOIN FETCH msg.commands AS cmd " + "ORDER BY msg.identifier ASC" ; Query query = session.createQuery( sqlQuery ) .setFirstResult( elementsPerBlock * ( (page-1) +1 ) ) .setMaxResults( element
我正在使用Hibernate的Spring Boot,我想在项目中使用分页.我已经在Google上搜索并看到了许多示例,但我无法在项目中实施. 我想喜欢如果我在URL中通过1个,那么10个结果应该到来,如果我通过2,那么下一个结果应该来等. 这是我的 dao @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(HttpServletReques
通常看起来像这样的查询.有没有更好的方法,而不是制作两个几乎平等的方法,一种执行"选择 *...",另一个执行" count *..."? public List findCats(String name, int offset, int limit) { Query q = session.createQuery("from Cat where name=:name"); q.setString("name", name); if (offset > 0) { q.setFirstResult(offset); } if (limit > 0) { q.setMaxResults(limit); } return q.list(); } public Long countCats(String name) { Query q = session.createQue