I've created https://hibernate.atlassian.net/browse/HHH-13776.
Thanks! Gail On Tue, Dec 10, 2019 at 1:30 PM Steve Ebersole <st...@hibernate.org> wrote: > Actually I was thinking of @EmbeddedId, but you were asking about @IdClass. > > I think (2) sounds more natural. > > > On Tue, Dec 10, 2019 at 3:12 PM Steve Ebersole <st...@hibernate.org> > wrote: > >> To me this is perfectly consistent with how inheritance works in entity >> hierarchies. Unless a super type is marked with @Entity >> or @MappedSuperclass, the "attributes" defined on that specific class are >> not picked up. >> >> Maybe I'm misunderstanding you? >> >> On Mon, Dec 9, 2019 at 1:58 PM Gail Badner <gbad...@redhat.com> wrote: >> >>> Hi, >>> >>> Suppose we have the following: >>> >>> public class CompositeKey implements Serializable { >>> >>> private Long id1; >>> >>> private Long id2; >>> >>> public CompositeKey(Long id1, Long id2) { >>> super(); >>> this.id1 = id1; >>> this.id2 = id2; >>> } >>> ... >>> } >>> public class InheritedKey extends CompositeKey { >>> >>> private Long id3; >>> >>> public InheritedKey(Long id1, Long id2, Long id3) { >>> super(id1, id2); >>> this.id3 = id3; >>> } >>> ... >>> } >>> >>> @Entity(name = "IKE") >>> @IdClass(InheritedKey.class)public class InheritedKeyEntity { >>> >>> @Id >>> private Long id1; >>> >>> @Id >>> private Long id2; >>> >>> @Id >>> private Long id3; >>> >>> private String name; >>> ... >>> } >>> >>> >>> Currently, Hibernate does not include InheritedKey#id3 in >>> InheritedKeyEntity's composite key unless InheritedKey is annotated with >>> @MappedSuperclass. >>> >>> I think there are some improvements that can be made. >>> >>> 1) As you can see, the entity, itself, has all of the ID fields >>> annotated. >>> An improvement would be for Hibernate to ensure that all mapped ID >>> properties have been detected, and throw an exception if this is not the >>> case. >>> >>> 2) A class used as an IdClass does not need any annotations (as opposed >>> to >>> a class used for an EmbeddedId class, which requires {{@Embeddable}}). >>> Since the class used as an IdClass does not need to be annotated, it >>> seems >>> kind of strange that its superclass would need to be annotated with >>> {{@MappedSuperclass}} in order for its fields/properties to be >>> persistent. >>> Since the field/property names must match what is annotated in an >>> IdClass, >>> it is clear that the field/property in a superclass is intended to be an >>> ID. Perhaps we could make annotating the superclass with >>> {{@MappedSuperclass}} optional? >>> >>> Opinions? >>> >>> Thanks, >>> Gail >>> _______________________________________________ >>> hibernate-dev mailing list >>> hibernate-dev@lists.jboss.org >>> https://lists.jboss.org/mailman/listinfo/hibernate-dev >>> >>> _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev