Reproduced rather easily, for once.
Deadlock report:
<deadlock> <victim-list> <victimProcess id="process21c64494108" /> </victim-list> <process-list> <process id="process21c64494108" taskpriority="0" logused="0" waitresource="PAGE: 5:1:833 " waittime="2494" ownerId="134881" transactionname="implicit_transaction" lasttranstarted="2023-03-14T08:06:08.063" XDES="0x21c6b9dc428" lockMode="S" schedulerid="2" kpid="856" status="suspended" spid="66" sbid="0" ecid="0" priority="0" trancount="1" lastbatchstarted="2023-03-14T08:06:08.063" lastbatchcompleted="2023-03-14T08:06:08.063" lastattention="1900-01-01T00:00:00.063" clientapp="Microsoft JDBC Driver for SQL Server" hostname="yrodiere.redhat" hostpid="68718" loginname="sa" isolationlevel="read committed (2)" xactid="134881" currentdb="5" currentdbname="testdb" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128058"> <executionStack> <frame procname="adhoc" line="1" stmtend="158" sqlhandle="0x02000000a7beca34b34c9166a637b2ed0afcfdac78b782870000000000000000000000000000000000000000"> unknown </frame> <frame procname="unknown" line="1" sqlhandle="0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"> unknown </frame> </executionStack> <inputbuf> select count(outboxeven0_.id) as col_0_0_ from HSEARCH_OUTBOX_EVENT outboxeven0_ </inputbuf> </process> <process id="process21c5ec0e4e8" taskpriority="0" logused="10960" waitresource="PAGE: 5:1:832 " waittime="2491" ownerId="134851" transactionname="implicit_transaction" lasttranstarted="2023-03-14T08:06:08.060" XDES="0x21c6df10428" lockMode="IX" schedulerid="3" kpid="9788" status="suspended" spid="63" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2023-03-14T08:06:08.063" lastbatchcompleted="2023-03-14T08:06:08.063" lastattention="1900-01-01T00:00:00.063" clientapp="Microsoft JDBC Driver for SQL Server" hostname="yrodiere.redhat" hostpid="68718" loginname="sa" isolationlevel="read committed (2)" xactid="134851" currentdb="5" currentdbname="testdb" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128058"> <executionStack> <frame procname="adhoc" line="1" stmtstart="42" stmtend="130" sqlhandle="0x0200000066e46c36decc042a72978b306c1239da133500ed0000000000000000000000000000000000000000"> unknown </frame> <frame procname="unknown" line="1" sqlhandle="0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"> unknown </frame> </executionStack> <inputbuf> (@P0 varbinary(8000))delete from HSEARCH_OUTBOX_EVENT where id=@P0 </inputbuf> </process> </process-list> <resource-list> <pagelock fileid="1" pageid="833" dbid="5" subresource="FULL" objectname="testdb.dbo.HSEARCH_OUTBOX_EVENT" id="lock21c5ef0da00" mode="IX" associatedObjectId="72057594055360512"> <owner-list> <owner id="process21c5ec0e4e8" mode="IX" /> </owner-list> <waiter-list> <waiter id="process21c64494108" mode="S" requestType="wait" /> </waiter-list> </pagelock> <pagelock fileid="1" pageid="832" dbid="5" subresource="FULL" objectname="testdb.dbo.HSEARCH_OUTBOX_EVENT" id="lock21c5d0a6400" mode="S" associatedObjectId="72057594055360512"> <owner-list> <owner id="process21c64494108" mode="S" /> </owner-list> <waiter-list> <waiter id="process21c5ec0e4e8" mode="IX" requestType="wait" /> </waiter-list> </pagelock> </resource-list> </deadlock>