Imagine an Entity A has a non-mandatory one-to-one relationship with itself, say something like the diagram below.

Do I write sourceTransaction and destinationTransaction as: public DepositAccountTransaction sourceTransaction; public DepositAccountTransaction destinationTransaction; without any annotations?
No you always will need the annotation. If it is optional:
I wouldn't declare any property as public btw. You may want to use projectlombok to generate getters and setters.