In your case, you are generating the database from the classes. This would imply that you wont use the database for other purposes (as doing so would force you to have DDL scripts). That means that have this rule implemented in the database or in the java code is unimportant.
We also know that Hibernate would raise a transient exception in the case where one would delete one or more statuses and try to reference it when committing without a cascade.
Also, the database will be generated using a foreign key constraint.
All that means that the constraint MUST be respected for the application to work.
If your entities are in a jar by themselves, you could add a transient method to the alarm or the status interface to remove a status while respecting the rule.
Also, the programmers, when using the entities will be forced to respect the rule or else the code wont work. But to make the task easier, you could make the relation bidirectional so that the task of tracking down the alarms from the statuses is made easier.
If you can, use an ondelete interceptor/listener to set the alarm.status property to null.