Re: [hibernate-dev] Can a transient attribute be overridden to be persistent in a subclass?

Gail Badner <[email protected]>
Newsgroups gmane.comp.java.hibernate.devel
Message-ID <CAFDzhiSLQ0Q9AOVWD5CLmWAqMkUmA68OZagi9qGfBWjK6i6h5w@mail.gmail.com>
Thanks, Andrea.

I've created https://hibernate.atlassian.net/browse/HHH-14103.

Since you already see the mapping above, I'll assume you don't need to
review the test case before pushing upstream.

Regards,
Gail

On Thu, Jul 9, 2020 at 10:09 AM andrea boriero <[email protected]> wrote:

> Hi Gail,
>
> based on my understanding of Section 2.2  it seems that it should not be
> portable, but I think that it would be nice for Hibernate to support the
> feature.
>
> On Thu, 9 Jul 2020 at 17:40, Gail Badner <[email protected]> wrote:
>
>> Hi Christian,
>>
>> It actually does work already.
>>
>> I was just trying to get answers to the questions at the end of my email.
>>
>> > Would overriding a transient attribute be portable? If not, is that
>> something Hibernate would/should support?
>>
>> If the answer is "yes" to either of those, I'll add a test case to the
>> test
>> suite.
>>
>> Thanks,
>> Gail
>>
>> On Thu, Jul 9, 2020 at 12:47 AM Christian Beikov <
>> [email protected]>
>> wrote:
>>
>> > I agree, this should work. Do you have a JIRA ticket describing what the
>> > problem is?
>> >
>> > Am 09.07.2020 um 02:42 schrieb Gail Badner:
>> > > I *think* the following is valid, but I need confirmation. This
>> mapping
>> > > does seem to work for Hibernate.
>> > >
>> > > A transient attribute, Employee#title, gets overridden as a persistent
>> > > attribute, Editor#title, stored in a column named "e_title".
>> > >
>> > > Writer#title is also transient, but Writer#group uses the same
>> "e_title"
>> > > column as a foreign key. That foreign key value is used to populate
>> > > Writer#title.
>> > >
>> > > @Entity
>> > > @Table(name="Employee")
>> > > @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
>> > > @DiscriminatorColumn(name="department")
>> > > public abstract class Employee {
>> > >      private String name;
>> > >      private String title;
>> > >
>> > >      @Id
>> > >      public String getName() {
>> > >          return name;
>> > >      }
>> > >
>> > >      @Transient
>> > >      public String getTitle() {
>> > >          return title;
>> > >      }
>> > >
>> > >      protected void setName(String name) {
>> > >          this.name = name;
>> > >      }
>> > >
>> > >      protected void setTitle(String title) {
>> > >          this.title = title;
>> > >      }
>> > > }
>> > >
>> > > @Entity
>> > > public class Editor extends Employee {
>> > >      @Column(name = "e_title")
>> > >      public String getTitle() {
>> > >          return super.getTitle();
>> > >      }
>> > >
>> > >      public void setTitle(String title) {
>> > >          super.setTitle( title );
>> > >      }
>> > > }
>> > >
>> > > @Entity
>> > > public class Writer extends Employee {
>> > >      private Group group;
>> > >
>> > >      @ManyToOne(optional = false)
>> > >      @JoinColumn(name = "e_title")
>> > >      public Group getGroup() {
>> > >          return group;
>> > >      }
>> > >
>> > >      public void setGroup(Group group) {
>> > >          this.group = group;
>> > >          setTitle( group.getName() );
>> > >      }
>> > > }
>> > >
>> > > In 4.2, the above mapping worked with Employee#title being persistent,
>> > but
>> > > does not work in 5.3.
>> > >
>> > > Section 2.2 Persistent Fields and Properties of the spec says:
>> > >
>> > > "Entity subclasses may override the property accessor methods.
>> However,
>> > > portable applications must not override the object/relational mapping
>> > > metadata that applies to the persistent fields or properties of entity
>> > > superclasses."
>> > >
>> > > Would overriding a transient attribute be portable? If not, is that
>> > > something Hibernate would/should support?
>> > >
>> > > Thanks,
>> > > Gail
>> > > _______________________________________________
>> > > hibernate-dev mailing list
>> > > [email protected]
>> > > https://lists.jboss.org/mailman/listinfo/hibernate-dev
>> > _______________________________________________
>> > hibernate-dev mailing list
>> > [email protected]
>> > https://lists.jboss.org/mailman/listinfo/hibernate-dev
>> >
>> >
>> _______________________________________________
>> hibernate-dev mailing list
>> [email protected]
>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>
>>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.