如何在不使用任何数据库的情况下测试Hibernate标准查询?
我正在开发带有许多复杂的Hibernate标准查询的Java应用程序.我想测试这些条件,以确保它们选择正确的对象,只有正确的对象.当然,一种方法是设置一个内存数据库(例如HSQL),在每个测试中,使用标准往返该数据库,然后断言查询结果与我的期望相匹配. 但是我正在寻找一个更简单的解决方案,因为休眠条件只是关于Java对象的一种特殊的逻辑谓词.因此,从理论上讲,它们可以在不访问任何数据库的情况下进行测试.例如,假设有一个称为Cat的实体: class Cat { Cat(String name, Integer age){ this.name = name; this.age = age; } ... } 我想做这样的事情,创建标准查询: InMemoryCriteria criteria = InMemoryCriteria.forClass(Cat.class) .add(Restrictions.li
12 2023-11-07
编程技术问答社区
Hibernate criteria api 'Select in'
是否可以使用Hibernate Critiria api? 示例: 我有两个桌子:n关系,公司和部门 select * from company c where c.id in (select company_id from department d where d.departmentname = 'HR' and d.location = 'xyz') 解决方案 您可以用于此分离有限轨迹 DetachedCriteria subCriteria= DetachedCriteria.forClass(Departament.class); subCriteria.add(Property.forName("departmentname ").eq("HR")); subCriteria.add(Property.forName("location ").eq("xyz")); subCriteria.setProjection(Pro
8 2023-10-04
编程技术问答社区
Hibernate Criteria的属性不在(子查询)中
我想执行查询 之类的问题 Select id, name from information where name not in (select firstname from contact where id = 1) Information Id Name 1 Test Contact id firstname 1 name 2 Test 如果我使用的是neproperty()函数,它将以name != Test. 为单位返回记录 如何使用冬眠条件实现? 谢谢 解决方案 创建一个选择的标准: Criteria cr = session.createCriteria(Your.class); List list = cr.list(); 然后,您可以将限制添加到它,即1列= 8等的地方: cr.add(Restrictions.eq("YourCondition", YourCondition)); 最后,您可以在这样的子句中提
4 2023-10-04
编程技术问答社区
使用hibernate在一对多映射中获取更新的行
我有两个实体问题和Issue_Tracker.我已经在一对一地图上加入了两个桌子.在Issue_Tracker中,我们可以有多个条目,例如 issue_id tracker_status tracked_time 123 Assigned 1/8/2013 11:44 123 Assigned 1/8/2013 11:45 123 Completed 1/8/2013 11:52 32 Assigned 1/9/2013 16:46 33 Assigned 1/9/2013 16:47 33 Cancel 1/9/2013 16:49 我想通过tracked_time订购essue_tracker entity,这样我才能获得最后更新tra
0 2023-10-04
编程技术问答社区
SQL#39;比如';Hibernate标准API中的运算符
我想用Hibernate Criteria实现一些通用过滤器.它应该像LIKE sql的操作员一样工作: SELECT * FROM table WHERE table.ANYCOLOUMNHERE LIKE '%'||anyvaluehere||'%' i有Map其中 key 是列名,而 value 是其值. 我尝试了这样的事情: for (Entry filter : filters.entrySet()) { crit.add(Restrictions.ilike(filter.getKey(), filter.getValue(), MatchMode.ANYWHERE)); } 但是当字段类型不是字符串时,它会导致java.lang.ClassCastException: [com.nsn.util.LoggerUtilerror] (http-localhost-127.0
10 2023-09-22
编程技术问答社区
Hibernate Criteria Api是否能完全防止SQL注入?
我正在与Hibernate合作保护我的网站免受SQL注入. 我听说Hibernate标准API比HQL强大. Hibernate标准API是否完全防止SQL注入? 解决方案 是的,它确实如此. 标准API以及HQL或JPQL中的查询参数都可以逃脱参数,并且不会执行恶意SQL. 仅当您简单地将参数串联到查询中时,漏洞才会暴露出来.然后,任何恶意SQL成为您查询的一部分. edit owasp具有
8 2023-09-21
编程技术问答社区
Hibernate CriteriaAPI和like操作符。交换操作数+独立于数据库的连接--这可能吗?
介绍 我有一个奇怪的任务 - 在Hibernate Criteria api上写(即数据库独立样式)SQL查询类似于 select * from branch b where '2/5/3/' like b.hier_path + '%' 其中+是串联操作员.串联操作员是数据库依赖性'+" MS SQL,'||'在Oracle等. 我必须使用标准API(并且无法切换到HQL). 问题#1-喜欢操作员 不幸的是,Hibernate允许仅根据Java对象属性编写标准: pCriteria.createCriteria(Branch.class).add(Restrictions.like("hierarchyPath", "2/5/3/%")); 等效于 select * from branch where 'hier_path like 2/5/3/%' 我不知道如何交换类似运营商的操作数. 问题2-数据库独立串联 SQL
24 2023-09-19
编程技术问答社区
Hibernate急于加载的查询
模型是user可以具有许多LoginSessions(logginsession可以与一个用户有关). 我要实现的目标是使用户使用相关的登录(查询中提供的令牌). 所有这些我都只是尝试使用一个查询,所以我想使用急切的加载,这是我的代码: 我有此代码: LoginSession loginSession = new LoginSession(); loginSession.setToken(sessionToken); //Example loginSessionExample = Example.create(loginSession); Criteria crit = session.createCriteria(User.class); crit.createAlias("userLoginSession", "session"); crit.add(Restrictions.eq("session.token", s
12 2023-09-19
编程技术问答社区
在多对多的关系中使用IN操作符的JPA标准查询
我有以下两个实体: 个人资料,类别​​ 在个人资料实体中,我有一个配置文件具有 的类别列表 在类别实体中,我有一个类别具有 的配置文件列表 生成的表称为 profiles_has_categories ,并具有以下列: profile_id,category_id 我想找到所有属于任何类别的配置文件,并具有以下IDS 1、2、3、4 我会在以下纯粹的sql中这样做: SELECT p.* FROM profiles p, profiles_has_categories phc WHERE p.id = phc.profile_id AND phc.category_id IN (1, 2, 3, 4) ,但我无法弄清楚如何使用Criteriabuilder在JPA中构造查询: CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery criteria
2 2023-09-18
编程技术问答社区
在实体关系不直接的情况下,如何使用hibernate标准连接多个表?
我有三个实体.那是: @Entity public class Organization { @Id private long id; @Column private String name; } @Entity public class Book { @Id private Long id; @Column private String name; @ManyToOne private Organization organization; } @Entity public class Account { @Id private Long id; @Column private String name; @ManyToOne private Book book; } 在这三个实体中,我想在SQL之后执行: SELECT acc.name, acc.
110 2023-09-17
编程技术问答社区
如何使用Hibernate Projection检索一个复杂的类及其成员?
我有一个班级,遵循需要使用Hibernate从DB检索的课程. 问题是我的班级有多个成员,其中大多数是课程,我该如何检索? @Entity public class Student { @Id long id; String name; String fname; @OneToMany List courses; @ManyToOne Dealer dealer; ... } @Entity public class Dealer { @Id long id; String name; @OneToMany(fetch = FetchType.LAZY, mappedBy = "cr.dealer", cascade = CascadeType.ALL) Set cars = new HashSet(0); .. } 我需要检索学生ID 1及其所有课程,其经销商和
0 2023-09-16
编程技术问答社区
带有IN子句和子选择的多列的Hibernate标准查询
我有一个与 a>. 我正在为所有匹配field3和field4的唯一组合从表1中选择所有数据. . 这是我的剥离SQL: select * from table1 as t1 where (t1.field1, t1.field2) in (select distinct field3, field4 from table2 as t2 where t2.id=12345); 我需要将我的SQL转换为休眠条件.我的实体对象正确映射到表格并将响应转换为正确的结果实体,但是我无法正确翻译我的子句. 我拥有的 Criteria criteria = getSession().createCriteria(Table1.class); DetachedCriteria subquery = DetachedCriteria.forC
16 2023-09-16
编程技术问答社区
使用Hibernate的标准和预测来选择多个不同的列
使用Hibernate的标准,我想执行等效的: select distinct uspscity, state from citycomplete where USPSCITY = 'HOUSTON' 我认为以下操作会产生我想要的结果: ProjectionList projList = new ProjectionList(); projList.add(Projections.distinct(Projections.property("id.state"))); projList.add(Projections.distinct(Projections.property("id.uspsCity"))); criteria.setProjection(projList); 但是,这实际上是执行类似: select distinct uspscity, distinct state from citycomplete where USPSCITY = 'HO
6 2023-09-16
编程技术问答社区
Hibernate按标准对象分组
我想使用Hibernate标准实现以下SQL查询: SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name value GROUP BY column_name 我试图使用冬眠条件实现此功能,但它没有奏效. 谁能给我一个例子,如何使用冬眠条件来完成这件事? 谢谢! 解决方案 请参阅例如: SELECT column_name, max(column_name) , min (column_name) , count(column_name) FROM table_name WHERE column_name > xxxxx GROUP BY column_name 其等效标准对象是: List result = session.createCriteria(SomeTable.class)
14 2023-09-15
编程技术问答社区
Spring JPA规范过滤带有子实体的一对多关系
我有一个实体,如下 @Entity @Table(name = "inward_inventory") public class InwardInventory extends ReusableFields { @Id @GeneratedValue(strategy = GenerationType.AUTO) Long in_inventoryId; @ManyToMany(fetch=FetchType.EAGER,cascade = CascadeType.ALL) @JoinTable(name = "inventory_entry", joinColumns = { @JoinColumn(name = "in_inventoryId", referencedColumnName = "in_inventoryId") }, inverseJoinColumns = {
6 2023-09-13
编程技术问答社区
Spring JPA的例子Matcher比较日期条件
我正在使用Spring JPA,并使用示例Matcher获取数据列表. 源代码下面: public Page findAllByConditions(TranxReportFormModel formModel, Pageable page) { ExampleMatcher matcher = ExampleMatcher.matching() .withNullHandler(ExampleMatcher.NullHandler.IGNORE) .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) .withIgnoreCase() .withIgnoreNullValues(); Example example =
30 2023-09-13
编程技术问答社区
支持GROUP BY和GROUP_CONCAT与DISTINCT / ORDER BY / SEPERATOR的标准API和JPQL API?
使用JPA标准API,我想通过一列进行分组并连接另一列的值. 例如,以下是SQL方法,我正在寻找等效标准查询(和JPQL查询)方法. mysql> select *from GroupConcatenateDemo; +------+-------+ | Id | Name | +------+-------+ | 10 | Larry | | 11 | Mike | | 12 | John | | 10 | Elon | | 10 | Bob | | 11 | Sam | +------+-------+ 使用SQL 组 mysql> select Id,group_concat(Name SEPARATOR ',') as GroupConcatDemo from GroupConcatenateDemo group by Id; +------+-----------------+ | Id | GroupCon
6 2023-09-13
编程技术问答社区
org.hibernate.sql.ast.sqltreecreationexception:无法找到TableGroup -Model.dao.user(10555362627602899)
我有一个带有Hibernate 5.6.12项目的Spring Boot 2.7.5,我想使用Hibernate 6.6.2升级到Spring Boot 3.1.0 我正在尝试在数据库中进行查询计数,以获取数据库中的记录总数 我发现错误 org.hibernate.sql.ast.sqltreecreationexception:无法找到tablegroup -moder.dao.dao.user(1057834329991800) atorg.hibernate.query.sqm.sqm.sql.basesqmtosqlastconverter.preparereusablepath(basesqmtosqlastConverter.java:3349) 基类是: public class JPADaoImpl { protected final Logger logger = LoggerFactory.getLogger(getClass());
22 2023-09-12
编程技术问答社区
Hibernate元组标准查询
我正在尝试使用Hibernate创建查询,遵循第9章 与我的尝试的区别是我正在使用Spring MVC 3.0.这是我的地址类以及我创建的方法. @RooJavaBean @RooToString @RooEntity @RooJson public class Address { @NotNull @Size(min = 1) private String street1; @Size(max = 100) private String street2; private String postalcode; private String zipcode; @NotNull @ManyToOne private City city; @NotNull @ManyToOne private Country country; @ManyToOne
24 2023-09-12
编程技术问答社区
如何用Hibernate配置多个模式
我们需要在休眠中使用多个模式. 在我们的项目中,我们需要根据用户名和密码连接到多个模式.但是如何在Hibernate中配置多个模式? 请告诉我是否有办法. 解决方案 感谢 Hibernate多重支撑,您可以轻松地做到这一点: 以下示例可以在 Hibernate Orm文档文件夹. 每个架构可以是租户,因此您只需要为Hibernate Session提供租户标识符,Hibernate将知道要连接的数据库模式: private void doInSession(String tenant, Consumer function) { Session session = null; Transaction txn = null; try { session = sessionFactory .withOptions() .tenantIdentifier
4 2023-09-11
编程技术问答社区