我認為這是一個非常簡單的問題。但我沒有看到。有人可以幫幫我嗎?我有一個物體“用戶”:
@Entity
public class User {
@Id
@GeneratedValue
private Long id;
private String firstname;
private String lastname;
@Column(unique=true)
private String email;
@Column(columnDefinition = "varchar(63) default null", unique = true, nullable = true)
private String keycloakUserSubject;
@OneToMany(mappedBy = "user")
private Set<UserProjectRoleOfUserInProject_Assignation> userProjectRoleOfUserInProject_Assignation = new HashSet<>();
//getter and setter...
}
我有一個端點“UserController”,它試圖插入一個新用戶:
@Service
public class UserController implements UsersApiDelegate {
@Autowired
private UserRepository userRepository;
@Autowired
private UserMapper userMapper;
@Override
public ResponseEntity<Void> createUser(Optional<String> acceptLanguage) {
User user = new User();
user.setId(5L); // I usually tried without this line (cause it is generated) --> same error)
user.setLastname("st");
user.setFirstname("te");
user.setEmail(RandomStringUtils.random(10, true, false) "@mail.com");
System.out.println(user);
userRepository.saveAndFlush(user);
return new ResponseEntity<>(HttpStatus.CREATED);
}
//...
}
其對應的userRepository:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findAll();
Optional<User> findByKeycloakUserSubject(String keycloakUserSubject);
}
呼叫該端點我收到此錯誤:
User [email=rOaryOjCtG@mail.com, firstname=te, id=5, keycloakUserSubject=null, lastname=st, userProjectRoleOfUserInProject_Assignation=[]]
2022-06-01 08:23:47.937 WARN 16560 --- [nio-8000-exec-5] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 23505, SQLState: 23505
2022-06-01 08:23:47.938 ERROR 16560 --- [nio-8000-exec-5] o.h.engine.jdbc.spi.SqlExceptionHelper : Eindeutiger Index oder Prim?rschl3ssel verletzt: "PRIMARY KEY ON PUBLIC.USER(ID) [1, '[email protected]', 'Tobias', '333a4548-5fd6-463e-8d33-657c5174c5a4', 'Dobberphul']"
Unique index or primary key violation: "PRIMARY KEY ON PUBLIC.USER(ID) [1, '[email protected]', 'Tobias', '333a4548-5fd6-463e-8d33-657c5174c5a4', 'Dobberphul']"; SQL statement:
insert into user (email, firstname, keycloak_user_subject, lastname, id) values (?, ?, ?, ?, ?) [23505-200]2022-06-01 08:23:47.953 ERROR 16560 --- [nio-8000-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint ["PRIMARY KEY ON PUBLIC.USER(ID) [1, '[email protected]', 'Tobias', '333a4548-5fd6-463e-8d33-657c5174c5a4', 'Dobberphul']"; SQL statement:
insert into user (email, firstname, keycloak_user_subject, lastname, id) values (?, ?, ?, ?, ?) [23505-200]]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement] with root cause
org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Eindeutiger Index oder Prim?rschl3ssel verletzt:
"PRIMARY KEY ON PUBLIC.USER(ID) [1, '[email protected]', 'Tobias', '333a4548-5fd6-463e-8d33-657c5174c5a4', 'Dobberphul']"
Unique index or primary key violation: "PRIMARY KEY ON PUBLIC.USER(ID) [1, '[email protected]', 'Tobias', '333a4548-5fd6-463e-8d33-657c5174c5a4', 'Dobberphul']"; SQL statement:
insert into user (email, firstname, keycloak_user_subject, lastname, id) values (?, ?, ?, ?, ?)
我想我有時會失明......非常感謝。
uj5u.com熱心網友回復:
您的代碼中有一些東西試圖插入 [1, '[email protected]', 'Tobias', '333a4548-5fd6-463e-8d33-657c5174c5a4', 'Dobberphul'] 并且它已經存在。這就是你的錯誤所說的
uj5u.com熱心網友回復:
看起來select next value for hibernate_sequence
沒有觸發。在你的情況下,它總是 1 得到。
uj5u.com熱心網友回復:
謝謝你的幫助。
我找到了答案:
@GeneratedValue(strategy = GenerationType.IDENTITY)
做正確的作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/484440.html
下一篇:RestTemplateJunit:無法呼叫“org.springframework.http.ResponseEntity.getBody()”,因為“response”為空
