我有一个名为Author的实体,如下所示。我想在字段“name”上添加一个唯一约束。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
<tr>
<td>1,1</td>
<td>2,1</td>
<td>3,1</td>
</tr>
<tr>
<td>1,2</td>
<td>2,2</td>
<td>3,2</td>
</tr>
<tr>
<td>1,3</td>
<td>2,2</td>
<td>3,3</td>
</tr>
</table>
<button class="up">Up</button>
<div>
<button class="left">Left</button>
<button class="right">Right</button>
</div>
<button class="down">Down</button>
答案 0 :(得分:8)
JHipster生成器缺乏为实体生成唯一字段的选项。要手动完成:
我只在MySQL和PostgreSQL中对此进行了测试,我确实记得在某处读过这对某些NoSQL数据库不起作用。这也可能是它不包含在JHipster中的原因。但请不要引用我。
答案 1 :(得分:6)
当我执行上述操作时,它可以工作,但是当我尝试添加重复条目时,我收到错误:客户端上的内部服务器错误。这是太一般的错误,我想自定义它。所以我做了以下事情:
1)编辑myapp.web.rest.errors.ErrorConstants.java并添加此行以添加新的错误常量:
public static final String ERR_VALIDATION_DUPLICATE = "entity.validation.duplicate";
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());
}
3)编辑src / main / webapp / i18n / en / global.json并添加
"entity": {
...
"validation": {
...
"duplicate": "This value is duplicate to existing data.",
...
}
匹配服务器端错误映射生成的密钥。 您需要添加相同的文本消息,但需要翻译为支持的所有语言。
注意: 如果要在验证异常中更具体,可以创建自己的特殊异常,扩展DataIntegrityViolationException,然后在资源类中捕获该泛型DataIntegrityViolationException并抛出新异常。当然,将其映射为1,2和3。
答案 2 :(得分:3)