Hi David,
I've done some research in the past about how synonyms can be embedded in jOOQ's code generator output. I don't think it's a good idea to create separate TableImpl classes, specifically because foreign key information would be incomplete, or wrong. Imagine a table A referencing a table B. Now, you create a synonym X for A and Y for B. When you navigate from X to other tables, should you reach Y? Or B? Or both?
What happens with transitive synonyms? I.e. when you declare S as a synonym for Y? Should you now be able to navigate from A to S and/or Y and/or B?
I understand that synonyms can add some value also to jOOQ client code, but things get very complicated if classes are duplicated. If Java had type aliases like Ceylon, things would be much more easy to implement.
I'll continue thinking about what kind of support can be added to jOOQ. A Synonyms.java class that adds references to existing table literals is certainly doable.
Best Regards,
Lukas