Pab*_*uli 3 jpa constraints jhipster
我有一个名为Author的实体,如下所示.我想在字段"name"上添加一个唯一约束.
@Entity
@Table(name = "author")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "author")
public class Author implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
@Column( name = "name")
private String name;
@Column(name = "birth_date")
private LocalDate birthDate;
Run Code Online (Sandbox Code Playgroud)
JHipster生成器缺乏为实体生成唯一字段的选项.要手动完成:
我只在MySQL和PostgreSQL中对此进行了测试,我确实记得在某处读过这对某些NoSQL数据库不起作用.这也可能是它不包含在JHipster中的原因.但不要引用我的话.
当我执行上述操作时,它可以工作,但是当我尝试添加重复条目时,出现了错误:客户端内部服务器错误。这是太笼统的错误,我想对其进行自定义。所以我做了以下事情:
1)编辑myapp.web.rest.errors.ErrorConstants.java并添加以下行以添加新的错误常量:
public static final String ERR_VALIDATION_DUPLICATE = "entity.validation.duplicate";
Run Code Online (Sandbox Code Playgroud)
2)编辑myapp.web.rest.errors.ExceptionTranslator.java以添加我的错误翻译器
@ExceptionHandler(DataIntegrityViolationException.class)
@ResponseBody
@ResponseStatus(HttpStatus.CONFLICT)
public ErrorVM processDataIntegrityViolationException(DataIntegrityViolationException exception) {
return new ErrorVM(ErrorConstants.ERR_VALIDATION_DUPLICATE, exception.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
3)编辑src / main / webapp / i18n / en / global.json并添加
"entity": {
...
"validation": {
...
"duplicate": "This value is duplicate to existing data.",
...
}
Run Code Online (Sandbox Code Playgroud)
与服务器端错误映射生成的密钥匹配。您需要添加相同的短信,但翻译为所有支持的语言。
注意:如果要在验证异常中更具体,则可以创建自己的特殊异常以扩展DataIntegrityViolationException,然后在资源类中捕获该通用DataIntegrityViolationException并引发新异常。当然,将其映射为1、2和3。
归档时间: |
|
查看次数: |
3871 次 |
最近记录: |