<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">
<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>
                                <td>
                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>
                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
name conflict: surrogate and business key both want name 'id'
</h3>
<span style="margin-bottom: 10px;">
created by <a href="http://community.jboss.org/people/jjfraney">John Franey</a> in <i>JBoss Tools</i> - <a href="http://community.jboss.org/message/553564#553564">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><p>This has impact on my team's use of jboss tools.  If we chose a different name for surrogate key (not 'id') then I'd have a question about changing the generated xhtml and java code.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>In short, we want to use a surrogate key, which we believe is the recommendation of Hibernate devlopers.  I think Hibernate, Seam and JBoss tools are all using the name 'id' for the surrogate key.  'id' is not meant to be a business (natural) key.  The trouble is that 'id' is such a natural name for business level keys.  So, we could have a customer id that is known to the user of the webapp; the 'customer id' is NOT the surrogate key.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>So, our first try is to build convention that a field named 'sid' would be the surrogate id and 'id' as the natural key.  A customer table would have both fields and so we would refer to the business key as the 'customer id'.   That seems like a natural fit.  The trouble with that is all the code generated by seam which uses 'id' as the surrogate field.  I don't think its viable to change the code generators.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Another alternative is to retain 'id' as the name of surrogate key, but use the 'tablename_id' as the business (natural) id.  For example, a customer table would have an 'id' and a 'customer_id' field, former is surrogate, latter is natural.  I think this could be a bit more confusing than the first option.  Developers would get confused if they forgot to put themselves in the business perspective when talking about 'id'.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>So, I'm fishing for suggestions from this group on what approach would fit best with the jboss tools and lead to the least confusion.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>If you use 'sid' as the surrogate id, how do you work with the seam generated code?  Do you generate it and then manually edit?  or do you alter the code generator, and how did you do that?  As your project progressed, did you suffer any regret?</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Regards,</p><p>John</p></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/553564#553564">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss Tools at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2128">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>