Skip to content

Commit ced9ab8

Browse files
committed
Instructional Offering Cross Lists: Bugfix
- fixed a Hibernate exception (persistent instance references an unsaved transient instance) that can be thrown when dropping a course that has been involved in a wait-listing swap (CourseDemand.waitListSwapWithCourseOffering field when unitime.crossList.keepCourseRequests is set to true)
1 parent 60d2f8b commit ced9ab8

2 files changed

Lines changed: 24 additions & 2 deletions

File tree

JavaSource/org/unitime/timetable/server/courses/CrossListUpdateBackend.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import org.unitime.timetable.model.ChangeLog;
4848
import org.unitime.timetable.model.ClassInstructor;
4949
import org.unitime.timetable.model.Class_;
50+
import org.unitime.timetable.model.CourseDemand;
5051
import org.unitime.timetable.model.CourseOffering;
5152
import org.unitime.timetable.model.CourseRequest;
5253
import org.unitime.timetable.model.CurriculumCourse;
@@ -120,7 +121,7 @@ public GwtRpcResponseNull execute(CrossListUpdateRequest request, SessionContext
120121
x.getClassification().getCourses().remove(x);
121122
hibSession.remove(x);
122123
}
123-
if (ApplicationProperty.ModifyCrossListKeepCourseRequests.isTrue())
124+
if (ApplicationProperty.ModifyCrossListKeepCourseRequests.isTrue()) {
124125
for (CourseRequest oldReq: hibSession.createQuery(
125126
"from CourseRequest where courseOffering.uniqueId = :courseId", CourseRequest.class)
126127
.setParameter("courseId", co1.getUniqueId()).list()) {
@@ -134,6 +135,12 @@ public GwtRpcResponseNull execute(CrossListUpdateRequest request, SessionContext
134135
courseRequests.add(newReq);
135136
hibSession.remove(oldReq);
136137
}
138+
for (CourseDemand cd: hibSession.createQuery(
139+
"from CourseDemand where waitListSwapWithCourseOffering.uniqueId = :courseId", CourseDemand.class)
140+
.setParameter("courseId", co1.getUniqueId()).list()) {
141+
cd.setWaitListSwapWithCourseOffering(null);
142+
}
143+
}
137144

138145
List<AdvisorCourseRequest> acrs = hibSession.createQuery(
139146
"from AdvisorCourseRequest where courseOffering.uniqueId = :courseId", AdvisorCourseRequest.class)
@@ -245,7 +252,7 @@ public GwtRpcResponseNull execute(CrossListUpdateRequest request, SessionContext
245252
x.getClassification().getCourses().remove(x);
246253
hibSession.remove(x);
247254
}
248-
if (ApplicationProperty.ModifyCrossListKeepCourseRequests.isTrue())
255+
if (ApplicationProperty.ModifyCrossListKeepCourseRequests.isTrue()) {
249256
for (CourseRequest oldReq: hibSession.createQuery(
250257
"from CourseRequest where courseOffering.uniqueId = :courseId", CourseRequest.class)
251258
.setParameter("courseId", co2.getUniqueId()).list()) {
@@ -259,6 +266,12 @@ public GwtRpcResponseNull execute(CrossListUpdateRequest request, SessionContext
259266
courseRequests.add(newReq);
260267
hibSession.remove(oldReq);
261268
}
269+
for (CourseDemand cd: hibSession.createQuery(
270+
"from CourseDemand where waitListSwapWithCourseOffering.uniqueId = :courseId", CourseDemand.class)
271+
.setParameter("courseId", co2.getUniqueId()).list()) {
272+
cd.setWaitListSwapWithCourseOffering(null);
273+
}
274+
}
262275

263276
List<AdvisorCourseRequest> acrs = hibSession.createQuery(
264277
"from AdvisorCourseRequest where courseOffering.uniqueId = :courseId", AdvisorCourseRequest.class)

WebContent/help/Release-Notes.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,15 @@
2828
<release>
2929
<version>4.9.${build.number}</version>
3030
<release-date>${build.date}</release-date>
31+
<category>
32+
<title>Course Timetabling</title>
33+
<item>
34+
<name>Instructional Offering Cross Lists: Bugfix</name>
35+
<description>
36+
<line>Fixed a Hibernate exception (persistent instance references an unsaved transient instance) that can be thrown when dropping a course that has been involved in a wait-listing swap.</line>
37+
</description>
38+
</item>
39+
</category>
3140
<category>
3241
<title>Administration</title>
3342
<item>

0 commit comments

Comments
 (0)