<div dir="ltr"><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">Hi, JDBC experts!</span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">I am just an ordinary Java developer. When I designed my Restful interface, I defined the following response entities:</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb"> <br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">{</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb">
    </span></span> <span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"><br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">    code: "the response code"</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb"></span></span>,</span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">    emsg: "the user friendly error message"</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb">,</span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz"><span class="gmail-ryNqvb">    </span></span><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">eproperty: "the property of the entity which causing the error "</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb"> <br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">}</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb">

</span></span><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"><br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">For example, when the client code updates a user's email address through my Restful interface, if the email address already exists, I want to return an error like the following:</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb">
</span></span><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"><br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">{</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb">
    </span></span> <span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"><br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">    code: 400001,</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb"></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz"><span class="gmail-ryNqvb">    </span></span><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">emsg: "email address already taken",</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb"><br></span></span></span></div><div><span class="gmail-HwtZe" lang="en">    <span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">eproperty: "email"</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb">
</span></span><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"><br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">}</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb">
</span></span><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"><br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">Typically, the database side defines uniqueness constraints for the corresponding fields of the email.</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb"><br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">However, I found that through the existing JDBC API, it seems not easy to parse the corresponding field names from the errors returned by the database, especially considering the need to support different types of databases.</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb">

</span></span><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"><br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">Similar functions have been implemented in the JDBC drivers of some databases, such as postgresql.</span></span> <span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">Its PSQLException class inherits<span style="color:rgb(0,0,255)"> java.sql.SQLException</span>, we can get a <span style="color:rgb(0,0,255)">ServerErrorMessage</span>, and this class provides the getColumn method to get the field name that caused the error.</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb"></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">Can we add a</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb">
</span></span><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb" style="color:rgb(0,0,255)">public Optional<String> getOptionalCausingColumn</span></span><span class="gmail-jCAhz"><span class="gmail-ryNqvb">
</span></span><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">method to <span style="color:rgb(0,0,255)">SQLException</span>?</span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"><br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">Please forgive me, if I am asking at wrong place.<br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"><br></span></span></span></div></div>