SQL Query logging in extended events deadlock xml report is too short
If there isn't a way to tell sql not truncate, what is the best way of
retrieving the whole query

Every deadlock graph contains sqlhandle for every process that partecipates and it can be used to retrieve sql_text:
select *
from sys.dm_exec_sql_text(0x01000c001247710230b2bfa34800000000000000000000000000000000000000000000000000000000000000)

where the value for parameter for sys.dm_exec_sql_text is the sqlhandle from deadlock graph.
This way you may get your statement if its execution plan is still in cache.
You need the VIEW SERVER STATE permission to query sys.dm_exec_sql_text.