3
3
import io .hypersistence .utils .hibernate .type .json .JsonType ;
4
4
import jakarta .persistence .EntityManager ;
5
5
import jakarta .persistence .PersistenceContext ;
6
+ import jakarta .persistence .PersistenceContextType ;
6
7
import org .commonwl .view .git .GitDetails ;
7
8
import org .hibernate .query .Query ;
8
9
@@ -14,7 +15,8 @@ public class QueuedWorkflowRepositoryImpl implements QueuedWorkflowRepositoryCus
14
15
private static final String QUERY_DELETE_BY_RETRIEVED_FROM =
15
16
"DELETE FROM queued_workflow q WHERE q.temp_representation -> 'retrievedFrom' = :retrievedFrom" ;
16
17
17
- @ PersistenceContext EntityManager entityManager ;
18
+ @ PersistenceContext (type = PersistenceContextType .EXTENDED )
19
+ EntityManager entityManager ;
18
20
19
21
@ Override
20
22
public QueuedWorkflow findByRetrievedFrom (GitDetails retrievedFrom ) {
@@ -26,20 +28,27 @@ public QueuedWorkflow findByRetrievedFrom(GitDetails retrievedFrom) {
26
28
// out of ideas, so started testing everything found online):
27
29
// Use `new JsonType(GitDetails.class)`. That finally solved it.
28
30
// Ref: https://github.com/common-workflow-language/cwlviewer/pull/568
29
- return (QueuedWorkflow )
30
- entityManager
31
+ final Query <?> query = entityManager
31
32
.createNativeQuery (QUERY_FIND_BY_RETRIEVED_FROM , QueuedWorkflow .class )
32
- .unwrap (Query .class )
33
- .setParameter ("retrievedFrom" , retrievedFrom , new JsonType (GitDetails .class ))
34
- .getSingleResultOrNull ();
33
+ .unwrap (Query .class );
34
+
35
+ if (query == null ) {
36
+ return null ;
37
+ }
38
+
39
+ query .setParameter ("retrievedFrom" , retrievedFrom , new JsonType (GitDetails .class ));
40
+ return (QueuedWorkflow ) query .uniqueResult ();
35
41
}
36
42
37
43
@ Override
38
44
public void deleteByTempRepresentation_RetrievedFrom (GitDetails retrievedFrom ) {
39
- entityManager
40
- .createNativeQuery (QUERY_DELETE_BY_RETRIEVED_FROM , QueuedWorkflow .class )
41
- .unwrap (Query .class )
42
- .setParameter ("retrievedFrom" , retrievedFrom , new JsonType (GitDetails .class ))
43
- .executeUpdate ();
45
+ final Query <?> query = entityManager
46
+ .createNativeQuery (QUERY_DELETE_BY_RETRIEVED_FROM , QueuedWorkflow .class )
47
+ .unwrap (Query .class );
48
+
49
+ if (query != null ) {
50
+ query .setParameter ("retrievedFrom" , retrievedFrom , new JsonType (GitDetails .class ));
51
+ query .executeUpdate ();
52
+ }
44
53
}
45
54
}
0 commit comments