- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
表的结构如下:
CREATE TABLE Train
(
idTrain INT NOT NULL AUTO_INCREMENT,
nameTrain CHAR(20) NOT NULL,
PRIMARY KEY (idTrain)
);
CREATE TABLE Station
(
idStation INT NOT NULL AUTO_INCREMENT,
nameStation CHAR(50) NOT NULL,
PRIMARY KEY (idStation)
);
CREATE TABLE Schedule
(
idStation INT NOT NULL,
idTrain INT NOT NULL,
arrivalTime TIME NOT NULL,
departureTime TIME NOT NULL,
nextStation INT NOT NULL,
kmToNextStation INT NOT NULL,
PRIMARY KEY (idStation, idTrain, nextStation),
FOREIGN KEY (idStation) REFERENCES Station(idStation),
FOREIGN KEY (idTrain) REFERENCES Train(idTrain),
FOREIGN KEY (nextStation) REFERENCES Station(idStation)
);
需要使用 JPA Criteria 实现以下 sql 查询:
SELECT Station.nameStation, Schedule.arrivalTime, Schedule.departureTime, Schedule.kmToNextStation
FROM Schedule
JOIN Station
ON Station.idStation = Schedule.idStation
JOIN Train
ON Schedule.idTrain = Train.idTrain
WHERE Train.nameTrain = "268A";
这是我的尝试:
EntityManager em = EntitySupport.getEntityManager();
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<ScheduleEntity> cq = builder.createQuery(ScheduleEntity.class);
Root<ScheduleEntity> root = cq.from(ScheduleEntity.class);
Join<ScheduleEntity, TrainEntity> idTrain = root.join("idTrain");
Join<ScheduleEntity, StationEntity> idStation = root.join("idStation");
cq.multiselect(root.get("arrivalTime"),
root.get("departureTime"),
idTrain.get("nameTrain"));
Query query = em.createQuery(cq);
List res = query.getResultList();
System.out.println("Result query: " + res.toString());
显然,我做错了什么,因为我收到以下错误:
Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate appropriate constructor on class [srt.entity.ScheduleEntity]. Expected arguments are: java.util.Date, java.util.Date, java.lang.String [select new srt.entity.ScheduleEntity(generatedAlias0.arrivalTime, generatedAlias0.departureTime, generatedAlias1.nameTrain) from srt.entity.ScheduleEntity as generatedAlias0 inner join generatedAlias0.idTrain as generatedAlias1 inner join generatedAlias0.idStation as generatedAlias2]
帮助我使用 JPA Criteria 为上述 sql 查询编写正确的代码。
最佳答案
我对 JPA Criteria 的概念是错误的。现在我完全明白了,答案如下:
EntityManager em = EntitySupport.getEntityManager();
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<ScheduleEntity> cq = builder.createQuery(ScheduleEntity.class);
Root<ScheduleEntity> from = cq.from(ScheduleEntity.class);
Join<ScheduleEntity, StationEntity> idStation = from.join("idStation");
Join<ScheduleEntity, TrainEntity> idTrain = from.join("idTrain");
Predicate where = builder.equal(idTrain.get("nameTrain"), "268A");
cq.where(where);
List<ScheduleEntity> schedule = em.createQuery(cq).getResultList();
for(ScheduleEntity s : schedule) {
System.out.println(s.toString());
}
关于java - JPA Criteria 从一些表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35492439/
我需要创建一个 Hibernate 标准限制,或者 3 个条件。问题是最后一个条件实际上是使用 AND 运算符的条件。 我的第一个条件: Criterion startInRange = Restri
假设我的类型为 User,其中包含带有属性 Name 的类 Tenant 的对象。 我想从数据库用户中选择,其租户包含给定名称。 在 Hibernate Criteria 中,我可以使用别名简单地实现
select (case when dob = '2020-02-03' then 'adult' else 'teenage' end) as Age
我正在使用 Java 中的 hibernate 条件进行 MySql 查询。我在下面给出了我的代码的小快照。 Criteria criteria = getCurrentSession
我正在尝试使用条件查询进行删除。但看起来不错,但在运行时显示错误。我收到如下错误: Caused by: java.lang.AbstractMethodError: org.hibernate.ej
我目前正在尝试实现半边折叠以执行增量重新网格化。我正在处理流形网格。考虑以下简单网格: 目标是将 a 折叠成 b。 然而,在这种情况下,这会导致非流形网格 我想阻止。我的问题是: 我怎样才能提前做到这
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在考虑为我的应用使用 Firebase Analytics。我很好奇: 保留的标准是什么?保留是否跟踪具有我必须发送的唯一 ID 或唯一设备的用户帐户? 如果用户从多个设备登录到我的应用程序,我将
我想测试一个“withCriteria”闭包,但不知道如何去做。我看到了如何模拟 withCriteria 调用,但没有测试闭包中的代码。在运行执行“withCriteria”的测试时,我不断收到 M
如何从以下 sql 创建 Hibernate 条件查询? String hql = "select e.employeeId,m.meetingId,e.firstname from Employee
我担心我可能已经表达了我的previous question很糟糕,所以为了清楚起见,我重新开始。 想象许多表,每个表之间存在 OneToMany 关联; 农场 -> 田地 -> RegionGrou
我将如何使用条件 API 执行以下 Hibernate 查询。我有一个对象 Parent 和 List Children。我想搜索所有 parent 并找到哪些 parent 包含指定的 child
我正在使用 Oracle,目前无法实现我需要的查询。 假设我有下表: - ID Date Type Value - 1 01/12/2016 prod 1 - 2
有没有办法用 JPA 2 CriteriaBuilder 编写与以下查询等效的内容? select * from season s1 where end = ( select max(end)
背景 我们定期对多个项目进行测试,并产生测试结果(通过或失败)。单个测试可以应用于多个项目,单个项目可以对其进行多个不同的测试。 我们需要做的是生成当前未通过测试的所有项目/测试组合的列表,以及自上次
SQL: String hql1 = "SELECT /* PARALLEL(MVR,16) PARALLEL(MVRS,16)*/ * FROM ICM MINUS SELECT I1.* FRO
为什么这是不可能的? Criteria crit1 = sess.createCriteria(Criteria1Class.class); Criteria crit2 = crit1.creat
我通常在 hibernate 状态下使用 criteria.addOrder(Order.desc("myField")); 如何在不使用 hsql 的情况下在 Hibernate 中编写此语句? s
假设我有一个具有以下值的表 Plan。 planName(VARCHAR2) | validFrom(timestamp) | validTo(timestamp) -----------------
给定映射的 hibernate 类: @Entity public class MyTestClass { /* id and stuff */ private Integer aValue;
我是一名优秀的程序员,十分优秀!