Hello,

First, been really enjoying jOOQ. What a pleasure to use and have the full 
power of SQL available.  Ok, so my question is about modeling inheritance 
with jOOQ.

I've reviewed the history of posts on this and come across:

   - https://groups.google.com/d/msg/jooq-user/9dfbLtnR77c/_0GL1H7f2ZYJ
   - https://groups.google.com/d/msg/jooq-user/FLrkH_u2bbE/zJS8DQeFu2wJ
   - https://groups.google.com/d/msg/jooq-user/9X_0gROVIf8/XZc2OXqitJQJ
   - https://groups.google.com/d/msg/jooq-user/YuTp9-5K9fs/_d5siyYQn3EJ 
   
I understand (and agree) with Lukas's position that since SQL does not 
directly model inheritance, jOOQ should not either.  I'd like to describe 
my approach to working around this and would appreciate any feedback for 
better ways of handling this.

*SQL*
We have the following tables:

CREATE TABLE notify_event (
    notify_event_id SERIAL  NOT NULL,
    PRIMARY KEY (notify_event_id),
);


CREATE TABLE notify_event_text_message (
    notify_event_id INTEGER  NOT NULL,
    message_body TEXT  NOT NULL,
    CONSTRAINT PK_notify_event_text_message PRIMARY KEY (notify_event_id)
);

Basically, a notify_event is the parent type, and notify_event_text_message 
is the subtype.

*Object Model*
In Java, we have modeled this as follows:

   - class NotifyEvent extends generated.tables.pojos.NotifyEvent
   - class NotifyEventTextMessage extends NotifyEvent

We're using a POJO pattern where we define our own POJOs, but just extend 
from the jOOQ auto-generated POJO in most cases and then add in any 
customizations we want.  This has worked very nicely so far, particularly 
for converting to/from JSON with the opportunity to customize the JSON 
serialization.

It even works well with patterns like:

notifyEventTextMessageRecord.into( models.NotifyEventTextMessage.class )

And then I manually manage the POJO member property links.  

*My Questions*
Does anyone else use this pattern with success?  Are there unforeseen 
issues we may run into down the line?  

So far, it's worked very well, with the sole exception that we have to copy 
& paste the jOOQ auto-generated POJO into any subtypes (e.g. 
NotifyEventTextMessage above) because Java doesn't like multiple 
inheritance.  This is somewhat problematic because if we auto-generate the 
POJO with changed properties, we no longer get the compiler error.  Has 
anyone else used this pattern and found a more elegant workaround?

Josh

-- 
You received this message because you are subscribed to the Google Groups "jOOQ 
User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to