Spring boot “获取信息”;尝试定义第二个主键;。运行@DataJpaTest时
我不知道确切的原因,但我从H2数据库中的Flyway evolution中得到了这条信息。这是一个@DataJpaTest春季开机测试 似乎有些方言的东西没有受到尊重 尝试定义第二个主键;SQL语句:Spring boot “获取信息”;尝试定义第二个主键;。运行@DataJpaTest时,spring-boot,junit,h2,flyway,Spring Boot,Junit,H2,Flyway,我不知道确切的原因,但我从H2数据库中的Flyway evolution中得到了这条信息。这是一个@DataJpaTest春季开机测试 似乎有些方言的东西没有受到尊重 尝试定义第二个主键;SQL语句: @RunWith(SpringRunner.class) @DataJpaTest @FlywayTest public class ParagraphStoreTest { @Autowired private TestEntityManager entityManager; @Autow
@RunWith(SpringRunner.class)
@DataJpaTest
@FlywayTest
public class ParagraphStoreTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
private ParagraphStore paragraphStore;
@Test
public void testExample() throws Exception {
long scanId = 123;
long userId = 1234;
int minParagraphLength = 1;
int pageNumber = 1;
int pageSize = 50;
Pageable pageable = new PageRequest(pageNumber, pageSize, Direction.ASC, "paragraphIndex");
this.entityManager.persist(Paragraph.builder().scan(Scan.builder().id(scanId).urlId(userId).build())
.paragraphIndex(1).wordCount(1));
Page<Paragraph> paragraphs = this.paragraphStore.findAllParagraphStatsByScanIdLimit(scanId, userId,
minParagraphLength, pageable);
assertNotNull(paragraphs);
}
}
User.java
@Entity
@Table(name="users")
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@NoArgsConstructor
@ToString(callSuper=true)
@Builder
public class User {
@Id
@Getter @Setter
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="users_id_seq")
@SequenceGenerator(name="users_id_seq", sequenceName="users_id_seq")
private Long id;
@Getter @Setter
private String socialId;
@Getter @Setter
private boolean IsEmailActivationRequired;
@Getter @Setter
private String firstName;
@Getter @Setter
private String lastName;
@Getter @Setter
private String userName;
@Getter @Setter
private String userPass;
@Email
@NotNull
@NotEmpty
@Getter @Setter
private String userEmail;
}
发布模型代码。@RobertMoskal完成。怀疑一旦我的SQL具有PostgreSQL特性,它就永远不会工作我不明白JPA为什么试图为用户名生成主键。该字段未进行注释。Flyway正在尝试创建PK。JPA标记为验证
@Entity
@Table(name="users")
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@NoArgsConstructor
@ToString(callSuper=true)
@Builder
public class User {
@Id
@Getter @Setter
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="users_id_seq")
@SequenceGenerator(name="users_id_seq", sequenceName="users_id_seq")
private Long id;
@Getter @Setter
private String socialId;
@Getter @Setter
private boolean IsEmailActivationRequired;
@Getter @Setter
private String firstName;
@Getter @Setter
private String lastName;
@Getter @Setter
private String userName;
@Getter @Setter
private String userPass;
@Email
@NotNull
@NotEmpty
@Getter @Setter
private String userEmail;
}