我在 Spring Boot 和 Hibernate REST API 中有我的实体对象。这个类有很多字段。其中一部分是嵌入式的,并且诸如 @Min @Max 之类的验证约束不适用于 @Embeddable 类中的字段。相同的验证规则在 @Entity 类中完美运行。我正在使用 javax.validation.constraints.Max
我的主要对象是这样的:
@Entity
public class Notice extends BaseEntity {
@Embedded
private MyEmbeddedClass myEmbeddedClass;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "entity_class_id")
private MyEntityClass myEntityClass;
}
Run Code Online (Sandbox Code Playgroud)
还有我的@embedded 课程:
@Embeddable
public class MyEmbeddedClass {
@Size(max = 50)
private String label;
@Max(100)
private Integer percent;
Run Code Online (Sandbox Code Playgroud)
}
百分比字段上的@Max 约束被忽略,但@size 工作正常
@Entity
public class MyEntityClass extends BaseEntity {
@Size(max = 50)
private String name;
@Max(6000)
private Integer size;
Run Code Online (Sandbox Code Playgroud)
}
在这里创建了对字段大小的 @Max 约束和 …
我在 mat-autocomplete 中使用 [displayWith] 指令。当我手动选择值时它工作正常,但当我重新加载页面时我没有得到翻译。翻译所需的参数是从 ngOnInit 中的查询参数异步加载的。所以我依赖异步参数,但我的 displayFunction() 是同步函数。怎么解决呢?
如果没有 [displayWith] 功能,一切正常,但没有翻译(它只是显示我不想要的纯值)。所以我确信其余代码是正确的。
我的垫子自动完成:
<mat-form-field [formGroup]="cityForm"
appearance="outline"
floatLabel="never"
color="primary">
<mat-icon matPrefix>location_on</mat-icon>
<input type="text" placeholder="{{ 'job_offer_search_bar.job-offer-search-bar-city-form.placeholder' | translate }}"
aria-label="Number" matInput
formControlName="cityControl" [matAutocomplete]="auto">
<mat-autocomplete #auto="matAutocomplete" (optionSelected)="onSelectionChanged($event.option.value)"
[displayWith]="displayFn.bind(this)">
<mat-option>
{{ 'job_offer_search_bar.job-offer-search-bar-city-form.all' | translate }}
</mat-option>
<mat-option *ngFor="let city of filtredCities | async" [value]="city">
{{ 'job_offer_search_bar.job-offer-search-bar-city-form.city' | translate:"{ city: '" + city +"' }"}}
</mat-option>
</mat-autocomplete>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)
我的 displayWith 函数如下:
displayFn(val: string){
if (!val) return '';
let stringToReturn;
this.translate.get('job_offer_search_bar.job-offer-search-bar-city-form.city', {city: val}).subscribe(value => {
console.log('inside …Run Code Online (Sandbox Code Playgroud)