spring-data-jpa 通过@DataJpaTest使用复合关键字实体进行测试时出现问题

bvn4nwqk  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(160)

我正在尝试测试一个实体,我已经Map了一个组合键。
简单地说,我尝试从Repository层进行测试,但是没有得到所需的数据和结果。
我并不经常使用@CreationTimestamp,所以您不必提及这一部分,但是如果这一部分有问题,
请您提一下。
请考虑错别字。谢谢。
代码如下所示:

@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@EqualsAndHashCode
@Getter
@IdClass(TestId.class)
@ToString
public class TestEntity  {

    @Id
    private Long groupCode;

    @Id
    private Long code;

    @CreationTimestamp
    @Column(nullable = false, updatable = false)
    private LocalDateTime regDate;

    @UpdateTimestamp
    @Column(insertable = false)
    private LocalDateTime modDate;

    public TestEntity(Long groupCode, Long code) {
        this.groupCode = groupCode;
        this.code = code;
    }
}

资料档案库

public interface TestEnttiyRepository extends JpaRepository<TestEntity, TestId> {
}

组合ID类
第一个
测试结果

Hibernate: 
    select
        testentity0_.code as code1_5_0_,
        testentity0_.group_code as group_co2_5_0_,
        testentity0_.mod_date as mod_date3_5_0_,
        testentity0_.reg_date as reg_date4_5_0_ 
    from
        test_entity testentity0_ 
    where
        testentity0_.code=? 
        and testentity0_.group_code=?
save = TestEntity(groupCode=1, code=1, regDate=null, modDate=null)
Hibernate: 
    insert 
    into
        test_entity
        (reg_date, code, group_code) 
    values
        (?, ?, ?)

现在我的问题是。
1.通过System.out.println的输出值和通过保存的insert query的输出值的顺序相反。
1.未自动添加LocalDateTime

fnvucqvd

fnvucqvd1#

通过System.out.println的输出值和通过保存的插入查询的顺序是相反的。
Repository.save就像EntityManager.persist一样不保存任何东西。它们只是使实体 * 托管 *,这将导致在 flush 发生时保存它们,这是在事务的结尾,而这又是在您的方法的结尾,所以在System.out语句之后。

相关问题