What I would suggest you do instead is take a look at this page:
http://www.hibernate.org/hib_docs/tools/ant/index.html
Then use hibernatetool <hbm2hbmxml> ant task to import hibernate mapping from an existing db schema (I'm assuming you're working with an existing database - if not, there is another tool to create the db from your Java objects, but I've never tried it).
That way you will see what Hibernate thinks of your mappings (mappings for all tables will be generated for you), and you will have a good start on tweaking those. It's much easier than writing all mappings from scratch, especially if you have many tables.
I would let Hibernate import your schema first. And then use another Hibernate task to create Java objects from mappings (<hbm2java>). That way you will see what Java classes are created by codegen. It could be that it might be better to place Link inside Document and Template, not the other way around.
HTH,
Bratek