If you’ve used the training dataset instead of the validation dataset in your validation method and still get bad results, I would assume that the validation method is wrong, no?
Just to make sure we are talking about the same use cases:
Initial use case:
train(train_dataset) # good training loss
validate(val_dataset) # bad validation loss

Your current test replacing the val_dataset
train(train_dataset) # good training loss
validate(train_dataset) # bad "fake" validation loss

If that’s the case, the error would point towards validate, not the val_dataset.