我正在开发一个Web Service JaxRs项目,在那里我从DBA获取所有数据库脚本。所以首先我执行该DB脚本来创建所有表和表属性的所有约束,在DB本身(这里是DB2)中,如字符长度等。 然后在项目中我使用Eclipse中的 Generate Entities from Table 创建所有模型类。
但是主要问题出在这里。有一个表“USER”,其属性username是可空的false,userType是最多3个字符长。这些限制/验证/约束存在于DB本身中,但不存在于Java用户模型类中。此外,我无法更改这些Model类,并在模型类的代码中添加这些验证。
现在,在创建用户时,我在保存时将这些约束的逻辑放在DAO层中。但是,除了前一个,我希望有一个错误消息的机制,即约束失败,同时保存,如果前端提供的输入userType超过3个char,验证失败,使用i18n.properties文件或任何api /框架。
目前,如果在调用EntityManager persist()然后调用commit()方法时任何验证失败,则代码将到达最后一个catch(RollbackException e){}块,而不会出现任何特定的验证异常消息或任何导致回滚异常的原因。
有没有办法实现我想做的事情。我如何概括这一点,以便它可以应用于我的模型类&使用JNDI查找检查DB中的约束并提供自定义消息。如果需要进一步说明,请询问您想要的任何代码段。