我正在使用SpringBoot,Spring數據和postgresql。保存後無法獲取數據庫生成的值
在postgres中,我創建了一個表格。
CREATE EXTENSION "uuid-ossp";
CREATE TABLE user (
id serial PRIMARY KEY not null,
user_id varchar(255) not null default uuid_generate_v4()
);
不是創建實體
@Entity
public class User implements Serializable {
private static final long serialVersionUID = 9129894781337596497L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(columnDefinition = "serial")
private Integer id;
@Column(insertable = false)
private String userId;
public static User create(){
User user = new User();
return user;
}
public String getUserId(){
return userId;
}
}
不是創造這樣
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {}
JPA庫當我救我需要ID和用戶id的用戶,但我得到空,而不是在數據庫生成UUID。
User user = userRepository.save(User.create());
assertThat(user.getUserId()).isNotNull();
如何從數據庫中獲取這些生成的值?
主鍵是id不是user_id,你應該檢查assertThat(user.getId())。isNotNull()。 – Mayur
我想獲得userId。即使我保存,之後嘗試使用.findOne(user.getId()),userId,生成的UUID表單數據庫,不會被檢索。 –
如果您像這樣更改表,會發生什麼情況:user_id varchar(255)not null默認'abc'?那樣你會得到'abc'還是null? 'abc'的 – riskop