在使用休眠模式执行数据库更新时遇到问题。尝试执行repository.add(Object)操作时,它会给出一个验证异常。
我已经在模型类上添加了验证,但是我尝试插入的值似乎可以满足要求,所以我不知道出了什么问题。
如果删除验证批注,repository.add(object)可能会成功完成,即
$tagQuery ="SELECT p.srNumber,h.handoverFrom,h.handoverRemarks FROM plannertags p
JOIN handovertable h
on p.srNumber = h.plannerTagsId
WHERE (p.status = '0' OR p.status = '2') AND p.currentStage = '1' AND p.assignedTo = '0' AND p.handoverStatus = '1' AND p.failedStatus = '1' AND h.latestTag = '1'
ORDER BY p.deliveryDate ASC";
请查看是否有任何建议,非常感谢。
MySQL(8.0.17)模式
休眠配置(application-test.yml)
// @Max(value = 30,message = "Name can only have a maximum length of 30")
// @Max(value = 30,message = "Color can only have a maximum length of 30")
模型(Car.java)
...
......
spring.datasource.url: jdbc:mysql://[the host URL]:3306/test
spring.datasource.username: [the username]
spring.datasource.password: [the password]]
spring.jpa.hibernate.ddl-auto: update
...
......
存储库(CarRepository.java)
package com.example.demo.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@ApiModel(value = "Car",description = "The model for car")
@Schema
@Entity
@Data
public class Car {
@ApiModelProperty(notes = "Car ID.",example = "12345",required = false,position = 0)
@Id
@GeneratedValue
private Long id;
@ApiModelProperty(notes = "Car name.",example = "Suzuki Swift 2020",required = true,position = 1)
@NotNull
@Max(value = 30,message = "Name can only have a maximum length of 30")
private String name;
@ApiModelProperty(notes = "Car color.",example = "blue",position = 2)
@NotNull
@Max(value = 30,message = "Color can only have a maximum length of 30")
private String color;
}
服务(TestService.java)
package com.example.demo.repo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.example.demo.model.Car;
@Repository
public interface CarRepository extends JpaRepository<Car,Long> {
}
Spring Boot 2.3.1
与Maven(pom.xml)数据相关的依赖项
...
......
public List<Car> getallCars() {
return carRepository.findAll();
}
public void addNewCar(Car car) {
carRepository.save(car);
}
public void deleteAllCars() {
carRepository.deleteAll();
}
...
......
JUnit测试(MiscTest.java)(应该满足验证要求)
...
......
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
...
......
收到异常
...
......
@Test
public void shouldBeAbleToDeleteCarAndAddCarAndGetallCars() {
testService.deleteAllCars();
Car car = new Car();
car.setName("Toyota Camry");
car.setColor("blue");
testService.addNewCar(car);
List<Car> carList = testService.getallCars();
assertEquals(1,carList.size());
testService.deleteAllCars();
}
...
......