Skip to content

Commit 2d905a2

Browse files
committed
Working!
1 parent b97eb38 commit 2d905a2

File tree

2 files changed

+33
-18
lines changed

2 files changed

+33
-18
lines changed

src/main/java/org/commonwl/view/workflow/QueuedWorkflowRepositoryImpl.java

+20-11
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.hypersistence.utils.hibernate.type.json.JsonType;
44
import jakarta.persistence.EntityManager;
55
import jakarta.persistence.PersistenceContext;
6+
import jakarta.persistence.PersistenceContextType;
67
import org.commonwl.view.git.GitDetails;
78
import org.hibernate.query.Query;
89

@@ -14,7 +15,8 @@ public class QueuedWorkflowRepositoryImpl implements QueuedWorkflowRepositoryCus
1415
private static final String QUERY_DELETE_BY_RETRIEVED_FROM =
1516
"DELETE FROM queued_workflow q WHERE q.temp_representation -> 'retrievedFrom' = :retrievedFrom";
1617

17-
@PersistenceContext EntityManager entityManager;
18+
@PersistenceContext(type = PersistenceContextType.EXTENDED)
19+
EntityManager entityManager;
1820

1921
@Override
2022
public QueuedWorkflow findByRetrievedFrom(GitDetails retrievedFrom) {
@@ -26,20 +28,27 @@ public QueuedWorkflow findByRetrievedFrom(GitDetails retrievedFrom) {
2628
// out of ideas, so started testing everything found online):
2729
// Use `new JsonType(GitDetails.class)`. That finally solved it.
2830
// Ref: https://github.com/common-workflow-language/cwlviewer/pull/568
29-
return (QueuedWorkflow)
30-
entityManager
31+
final Query<?> query = entityManager
3132
.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();
3541
}
3642

3743
@Override
3844
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+
}
4453
}
4554
}

src/main/java/org/commonwl/view/workflow/WorkflowRepositoryImpl.java

+13-7
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,29 @@
2222
import io.hypersistence.utils.hibernate.type.json.JsonType;
2323
import jakarta.persistence.EntityManager;
2424
import jakarta.persistence.PersistenceContext;
25+
import jakarta.persistence.PersistenceContextType;
2526
import org.commonwl.view.git.GitDetails;
2627
import org.hibernate.query.Query;
2728

2829
public class WorkflowRepositoryImpl implements WorkflowRepositoryCustom {
2930

3031
private static final String QUERY_FIND_BY_RETRIEVED_FROM =
31-
"SELECT w.* FROM workflow w WHERE w.retrieved_from = to_jsonb(encode(:retrievedFrom, 'escape'))";
32+
"SELECT w.* FROM workflow w WHERE w.retrieved_from = :retrievedFrom";
3233

33-
@PersistenceContext EntityManager entityManager;
34+
@PersistenceContext(type = PersistenceContextType.EXTENDED)
35+
EntityManager entityManager;
3436

3537
@Override
3638
public Workflow findByRetrievedFrom(GitDetails retrievedFrom) {
37-
return (Workflow)
38-
entityManager
39+
final Query<?> query = entityManager
3940
.createNativeQuery(QUERY_FIND_BY_RETRIEVED_FROM, Workflow.class)
40-
.unwrap(Query.class)
41-
.setParameter("retrievedFrom", retrievedFrom, new JsonType(GitDetails.class))
42-
.getSingleResultOrNull();
41+
.unwrap(Query.class);
42+
43+
if (query == null) {
44+
return null;
45+
}
46+
47+
query.setParameter("retrievedFrom", retrievedFrom, new JsonType(GitDetails.class));
48+
return (Workflow) query.uniqueResult();
4349
}
4450
}

0 commit comments

Comments
 (0)