我正在尝试测试一个实体,我已经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
。
1条答案
按热度按时间fnvucqvd1#
通过
System.out.println
的输出值和通过保存的插入查询的顺序是相反的。Repository.save
就像EntityManager.persist
一样不保存任何东西。它们只是使实体 * 托管 *,这将导致在 flush 发生时保存它们,这是在事务的结尾,而这又是在您的方法的结尾,所以在System.out
语句之后。