Having best of both composition and inheritance

I'm hoping someone will ready through this question and give it a better title as I'm finding it hard to explain my problem in one sentence.

Short Version: I have two classes Report and MrrtReport. MrrtReport is a subclass of Report class. I want it such that when I request hibernate to save an MrrtReport all fields of it's superclass are stored in the super class table and when I try to retrieve an MrrtReport table all fields from super class will be retrieved too.

Long version Say my Report class is

public class Report {

    private User author;

    private Date date;

    private String body;

    ...

    // getters and setters
}

Now I have to design another class MrrtReport which is just a report created by using a template called an MrrtReportTemplate. I don't want to duplicate the database schema. I tried composition so the MrrtReport table does not have to duplicate the database schema and came up with this.

public class MrrtReport {

    private MrrtReportTemplate template;

    private Report report; //

    // getters and setters
}

And my hibernate mapping file looks something like this

<hibernate-mapping>
    <class name="org.ivange94.MrrtReport"
    table="report" lazy="false">
    <id name="id" column="id">
        <generator class="native">
            <param name="sequence">report_id_seq</param>
        </generator>
    </id>
    <many-to-one name="mrrtReportTemplate" column="template_id"
        unique="true" not-null="true" />
    <one-to-one name="report" column="report_id" not-null="true" />
    </class>
</hibernate-mapping>

So now when I save an MrrtReport all properties belonging to Report are saved in the corresponding table for Reports and MrrtReport just holds a foreign key to it.

Now this makes it possible to not have a duplicate database schema and this also ensures that if the Report class is modified it may not break MrrtReport. But now I have another issue. There is a great amount of API that has been built to work with Reports and with my current approach I'd have to redo all that for an MrrtReport too. I want to be able to pass an MrrtReport where a Report is needed so I can take advantage of the huge amount of work that has been done with APIs that work with Reports. So I turned to using inheritance instead and came up with something like this

public class MrrtReport extends Report {

    private MrrtReportTemplate mrrtReportTemplate;
}

But when designing the database mapping I find my self duplicating columns already in the Report table and I don't want that.

What I want is when an instance of an MrrtReport is saved all properties of it's super class Report should be saved in the table for Reports and MrrtReport table should only store properties specific to it. But when you try to retrieve an MrrtReport object from the database, hibernate should be able to get all the properties stored in the super class table too. To do this I found myself adding a reference to the Report like composition while still using inheritance

public class MrrtReport extends Report {

    private MrrtReportTemplate template;
    private Report report;

    // getters and setters
}

And in my hibernate mapping MrrtReport just stores a foreign key reference to Report so all Report fields are stored there and the MrrtReport table does not have to store them too. At first this seemed to solve my problem but it only introduced another problem.

Within the MrrtReport I ended up with 2 references that should point to the same object but at some point if not used carefully may be used to refer to different objects. These references are, this, and report. I want the this reference and report to always point to the same object at all times but users of this class may change that by doing something like this

 MrrtReport mrrtReport = new MrrtReport();
 mrrtReport.setTemplate(template);
 mrrtReport.setReport(new Report()); // here

Also it does not make sense to me to have a getReport and setReport method on an MrrtReport which is also a Report.

In conclusion: what I want is to be able to use MrrtReport as a Report so I can take advantage of the API already built to work with Report but at the same time I don't want to have a duplicate schema in the database. I just want the MrrtReport to have a foreign key reference to the table holding all reports. Hope this makes sense.

I may be thinking about it all wrong. Maybe it's my lack of experience working with hibernate to achieve what I want.