26
26
import java .time .Instant ;
27
27
28
28
import org .hibernate .Session ;
29
- import org .hibernate .criterion .Restrictions ;
30
29
31
30
import javax .persistence .criteria .CriteriaBuilder ;
32
31
import javax .persistence .criteria .CriteriaDelete ;
41
40
42
41
public class UserTaskRepositoryImpl extends SpringCrudRepositoryImpl <UserTask , Long > implements UserTaskRepository {
43
42
43
+ public List <UserTask > findBySiteId (String siteId ) {
44
+
45
+ Session session = sessionFactory .getCurrentSession ();
46
+
47
+ CriteriaBuilder cb = session .getCriteriaBuilder ();
48
+ CriteriaQuery <UserTask > query = cb .createQuery (UserTask .class );
49
+ Root <UserTask > userTask = query .from (UserTask .class );
50
+ query .where (cb .equal (userTask .get ("task" ).get ("siteId" ), siteId ));
51
+
52
+ return session .createQuery (query ).list ();
53
+ }
54
+
44
55
public List <UserTask > findByTaskIdAndUserIdIn (Long taskId , List <String > userIds ) {
45
56
46
57
Session session = sessionFactory .getCurrentSession ();
47
58
48
- return (List <UserTask >) session .createCriteria (UserTask .class )
49
- .add (Restrictions .eq ("task.id" , taskId ))
50
- .add (Restrictions .in ("userId" , userIds )).list ();
59
+ CriteriaBuilder cb = session .getCriteriaBuilder ();
60
+ CriteriaQuery <UserTask > query = cb .createQuery (UserTask .class );
61
+ Root <UserTask > userTask = query .from (UserTask .class );
62
+ query .where (cb .equal (userTask .get ("task" ).get ("id" ), taskId ), userTask .get ("userId" ).in (userIds ));
63
+
64
+ return session .createQuery (query ).list ();
51
65
}
52
66
53
- public List <UserTask > findByUserIdAndStartsAfter (String userId , Instant from ) {
67
+ public List <UserTask > findByUserIdAndStartsAfterAndSoftDeleted (String userId , Instant from , Boolean softDeleted ) {
54
68
55
69
Session session = sessionFactory .getCurrentSession ();
56
70
57
71
CriteriaBuilder cb = session .getCriteriaBuilder ();
58
72
CriteriaQuery <UserTask > query = cb .createQuery (UserTask .class );
59
73
Root <UserTask > userTask = query .from (UserTask .class );
60
- query .where (cb .equal (userTask .get ("userId" ), userId ), cb .lessThanOrEqualTo (userTask .get ("task" ).get ("starts" ), from ));
74
+ query .where (cb .and (cb .equal (userTask .get ("userId" ), userId ) , cb .lessThanOrEqualTo (userTask .get ("task" ).get ("starts" ), from ))
75
+ , cb .or (cb .isNull (userTask .get ("softDeleted" )), cb .equal (userTask .get ("softDeleted" ), softDeleted )));
61
76
62
77
return session .createQuery (query ).list ();
63
78
}
@@ -66,18 +81,24 @@ public List<UserTask> findByUserIdAndSiteId(String userId, String siteId) {
66
81
67
82
Session session = sessionFactory .getCurrentSession ();
68
83
69
- return session .createQuery ("select u from UserTask u where userId = :userId and task.siteId = :siteId" )
70
- .setParameter ("userId" , userId )
71
- .setParameter ("siteId" , siteId ).list ();
84
+ CriteriaBuilder cb = session .getCriteriaBuilder ();
85
+ CriteriaQuery <UserTask > query = cb .createQuery (UserTask .class );
86
+ Root <UserTask > userTask = query .from (UserTask .class );
87
+ query .where (cb .equal (userTask .get ("userId" ), userId ), cb .equal (userTask .get ("task" ).get ("siteId" ), siteId ));
88
+
89
+ return session .createQuery (query ).list ();
72
90
}
73
91
74
- public List <UserTask > findByUserIdAndTask_StartsLessThanEqual (String userId , Instant instant ) {
92
+ public List <UserTask > findByUserIdAndTask_StartsLessThanEqual (String userId , Instant earlierThan ) {
75
93
76
94
Session session = sessionFactory .getCurrentSession ();
77
95
78
- return (List <UserTask >) session .createCriteria (UserTask .class )
79
- .add (Restrictions .eq ("userId" , userId ))
80
- .add (Restrictions .le ("task.starts" , instant )).list ();
96
+ CriteriaBuilder cb = session .getCriteriaBuilder ();
97
+ CriteriaQuery <UserTask > query = cb .createQuery (UserTask .class );
98
+ Root <UserTask > userTask = query .from (UserTask .class );
99
+ query .where (cb .equal (userTask .get ("userId" ), userId ), cb .lessThanOrEqualTo (userTask .get ("task" ).get ("starts" ), earlierThan ));
100
+
101
+ return session .createQuery (query ).list ();
81
102
}
82
103
83
104
public List <UserTask > findByTask_SiteId (String siteId ) {
@@ -92,19 +113,21 @@ public List<UserTask> findByTask_SiteId(String siteId) {
92
113
cq .where (cb .equal (taskJoin .get ("siteId" ), siteId ));
93
114
94
115
return session .createQuery (cq ).list ();
95
-
96
116
}
97
117
98
- public void deleteByTask (Task task ) {
118
+ public int deleteByTask (Task task ) {
99
119
100
120
Session session = sessionFactory .getCurrentSession ();
101
121
102
- session .createQuery ("delete from UserTask where task = :task" )
103
- .setParameter ("task" , task ).executeUpdate ();
104
- session .delete (task );
122
+ CriteriaBuilder cb = session .getCriteriaBuilder ();
123
+ CriteriaDelete <UserTask > cd = cb .createCriteriaDelete (UserTask .class );
124
+ Root <UserTask > userTask = cd .from (UserTask .class );
125
+ cd .where (cb .equal (userTask .get ("task" ), task ));
126
+
127
+ return session .createQuery (cd ).executeUpdate ();
105
128
}
106
129
107
- public void deleteByTaskAndUserIdNotIn (Task task , Set <String > users ) {
130
+ public int deleteByTaskAndUserIdNotIn (Task task , Set <String > users ) {
108
131
109
132
Session session = sessionFactory .getCurrentSession ();
110
133
@@ -113,6 +136,6 @@ public void deleteByTaskAndUserIdNotIn(Task task, Set<String> users) {
113
136
Root <UserTask > root = cd .from (UserTask .class );
114
137
cd .where (cb .equal (root .get ("task" ), task ), cb .not (root .get ("userId" ).in (users )));
115
138
116
- session .createQuery (cd ).executeUpdate ();
139
+ return session .createQuery (cd ).executeUpdate ();
117
140
}
118
141
}
0 commit comments