Looking for a simpler approach to handling my inheritance situation...

Tables:

  LOCATION
      id (PK)
      ... (PK possibly in here also)
     effective_date
     end_date
     valid

  PERSON
      id (PK)
      ...
      effective_date
      end_date
      valid

These two tables are not related.  Quite a few of our tables utilize
effective, end dates, and a valid indicator.  The reasoning is complicated,
but required.  However, those columns are not part of the key.

With this, it makes sense to have a DateRecord class that contains those
common attributes.

What I end up with in JPA terms makes things a bit ... difficult.

I've tried setting DateRecord as a MappedSuperclass, however, those columns
are not able to be queried by (in the where), unless the attribute values
match the column names.    The other way to get it to work is to have
@AttributeOverrides( {...} ) in the child class to actually give the
attribute mapping to the column names.  This seems to be a bit lame
considering I've added @Column in the DateRecord class.

Here is some general code:

@MappedSuperclass
public abstract class DateRecord implements Serializable
{    
   @Temporal(TemporalType.DATE)
    @Column(name = "effective_date")
    private Date effectiveDate;

    @Temporal(TemporalType.DATE)
    @Column(name = "end_date")
    private Date endDate;

    @Column(name = "valid")
    private String validityIndicator;

    ....getter/setters...
}

@Entity
@Table(name="Location")

//-- this seems kind of stupid - since..didn't I already define this in
DateRecord???
@AttributeOverrides( {AttributeOverride(name="effectiveDate, column =
@Column(name="effective_date")) ....
})

public class Location extends DateRecord implements Serializable
{
    @Id
    @Column(name="id"...)
    private int locationId

    .....
}


DAO:

    String query = "select model from Location where model.effectiveDate >=
:effectiveDate";




IF DateRecord is an @MappedSuperclass, this fails unless I have the
AttributeOverrides.  If I set DateRecord as an @Entity, and @Id is required
somewhere...

My mind is a swirl here, and there has got to be a better way!?


-- 
View this message in context: 
http://www.nabble.com/JPA-Inheritance-tp19314353s2369p19314353.html
Sent from the AppFuse - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to