Skip to content

Commit e6b5856

Browse files
authored
Merge pull request #10601 from IQSS/10599-findDeep
catch exceptions from DatasetServiceBean.findDeep
2 parents 1e137ef + b1d4e03 commit e6b5856

File tree

1 file changed

+27
-26
lines changed

1 file changed

+27
-26
lines changed

src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java

+27-26
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
import edu.harvard.iq.dataverse.export.ExportService;
2020
import edu.harvard.iq.dataverse.globus.GlobusServiceBean;
2121
import edu.harvard.iq.dataverse.harvest.server.OAIRecordServiceBean;
22-
import edu.harvard.iq.dataverse.pidproviders.PidProvider;
23-
import edu.harvard.iq.dataverse.pidproviders.PidUtil;
2422
import edu.harvard.iq.dataverse.search.IndexServiceBean;
2523
import edu.harvard.iq.dataverse.settings.SettingsServiceBean;
2624
import edu.harvard.iq.dataverse.util.BundleUtil;
@@ -41,11 +39,10 @@
4139
import jakarta.ejb.TransactionAttributeType;
4240
import jakarta.inject.Named;
4341
import jakarta.persistence.EntityManager;
44-
import jakarta.persistence.LockModeType;
4542
import jakarta.persistence.NoResultException;
43+
import jakarta.persistence.NonUniqueResultException;
4644
import jakarta.persistence.PersistenceContext;
4745
import jakarta.persistence.Query;
48-
import jakarta.persistence.StoredProcedureQuery;
4946
import jakarta.persistence.TypedQuery;
5047
import org.apache.commons.lang3.StringUtils;
5148

@@ -115,28 +112,32 @@ public Dataset find(Object pk) {
115112
* @return a dataset with pre-fetched file objects
116113
*/
117114
public Dataset findDeep(Object pk) {
118-
return (Dataset) em.createNamedQuery("Dataset.findById")
119-
.setParameter("id", pk)
120-
// Optimization hints: retrieve all data in one query; this prevents point queries when iterating over the files
121-
.setHint("eclipselink.left-join-fetch", "o.files.ingestRequest")
122-
.setHint("eclipselink.left-join-fetch", "o.files.thumbnailForDataset")
123-
.setHint("eclipselink.left-join-fetch", "o.files.dataTables")
124-
.setHint("eclipselink.left-join-fetch", "o.files.auxiliaryFiles")
125-
.setHint("eclipselink.left-join-fetch", "o.files.ingestReports")
126-
.setHint("eclipselink.left-join-fetch", "o.files.dataFileTags")
127-
.setHint("eclipselink.left-join-fetch", "o.files.fileMetadatas")
128-
.setHint("eclipselink.left-join-fetch", "o.files.fileMetadatas.fileCategories")
129-
.setHint("eclipselink.left-join-fetch", "o.files.fileMetadatas.varGroups")
130-
//.setHint("eclipselink.left-join-fetch", "o.files.guestbookResponses
131-
.setHint("eclipselink.left-join-fetch", "o.files.embargo")
132-
.setHint("eclipselink.left-join-fetch", "o.files.retention")
133-
.setHint("eclipselink.left-join-fetch", "o.files.fileAccessRequests")
134-
.setHint("eclipselink.left-join-fetch", "o.files.owner")
135-
.setHint("eclipselink.left-join-fetch", "o.files.releaseUser")
136-
.setHint("eclipselink.left-join-fetch", "o.files.creator")
137-
.setHint("eclipselink.left-join-fetch", "o.files.alternativePersistentIndentifiers")
138-
.setHint("eclipselink.left-join-fetch", "o.files.roleAssignments")
139-
.getSingleResult();
115+
try {
116+
return (Dataset) em.createNamedQuery("Dataset.findById")
117+
.setParameter("id", pk)
118+
// Optimization hints: retrieve all data in one query; this prevents point queries when iterating over the files
119+
.setHint("eclipselink.left-join-fetch", "o.files.ingestRequest")
120+
.setHint("eclipselink.left-join-fetch", "o.files.thumbnailForDataset")
121+
.setHint("eclipselink.left-join-fetch", "o.files.dataTables")
122+
.setHint("eclipselink.left-join-fetch", "o.files.auxiliaryFiles")
123+
.setHint("eclipselink.left-join-fetch", "o.files.ingestReports")
124+
.setHint("eclipselink.left-join-fetch", "o.files.dataFileTags")
125+
.setHint("eclipselink.left-join-fetch", "o.files.fileMetadatas")
126+
.setHint("eclipselink.left-join-fetch", "o.files.fileMetadatas.fileCategories")
127+
.setHint("eclipselink.left-join-fetch", "o.files.fileMetadatas.varGroups")
128+
//.setHint("eclipselink.left-join-fetch", "o.files.guestbookResponses
129+
.setHint("eclipselink.left-join-fetch", "o.files.embargo")
130+
.setHint("eclipselink.left-join-fetch", "o.files.retention")
131+
.setHint("eclipselink.left-join-fetch", "o.files.fileAccessRequests")
132+
.setHint("eclipselink.left-join-fetch", "o.files.owner")
133+
.setHint("eclipselink.left-join-fetch", "o.files.releaseUser")
134+
.setHint("eclipselink.left-join-fetch", "o.files.creator")
135+
.setHint("eclipselink.left-join-fetch", "o.files.alternativePersistentIndentifiers")
136+
.setHint("eclipselink.left-join-fetch", "o.files.roleAssignments")
137+
.getSingleResult();
138+
} catch (NoResultException | NonUniqueResultException ex) {
139+
return null;
140+
}
140141
}
141142

142143
public List<Dataset> findByOwnerId(Long ownerId) {

0 commit comments

Comments
 (0)