jack_zhang
jack_zhang
参考: https://www.baeldung.com/jpa-queries-custom-result-with-aggregation-functions 确实没有提到DTO的nativeSql的用法; 但看Hibernate感觉应该是支持才对。 https://thoughts-on-java.org/dto-projections/ 难道要配置@SqlResultSetMapping: https://stackoverflow.com/questions/29082749/spring-data-jpa-map-the-native-query-result-to-non-entity-pojo 这是个什么原理和机制有待研究......
76页最后一行, 不考虑数据安全的情况下,尽量使用StringBuffer 是不是写错了呢? https://www.javatpoint.com/difference-between-stringbuffer-and-stringbuilder 是的,性能好的是StringBuilder
#### 公共GenericTokenRepository ```` import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.NoRepositoryBean; import org.springframework.data.repository.query.Param; import org.springframework.transaction.annotation.Transactional; import java.time.Instant; import java.util.List; import java.util.Optional; /** * GenericTokenRepository 共同接口 * * @param UserToken/TeacherToken 这两个实体公用一个GenericTokenRepository...
### 只更新非null字段 ```` /** * @param user * @return */ @PostMapping("/user/notnull") public User saveUserNotNullProperties(@RequestBody User user) { //数据库里面取出最新的数据,当然了这一步严谨一点可以根据id和version来取数据,如果没取到可以报乐观锁异常 User userSrc = userRepository.findById(user.getId()).get(); //将不是null的字段copy到userSrc里面,我们只更新传递了不是null的字段 PropertyUtils.copyNotNullProperty(user,userSrc); return userRepository.save(userSrc); } ```` ```` package...
改成: ```` 改成,如下即可: spring.jpa.show-sql=false; logging.level.org.hibernate.SQL=DEBUG ```` 这样 sql就会通过logback的形式打印出来,会带上traceId,threadID等上下文信息; 
### 出现N+1的SQL的场景,我们有如下四个实体,核心内容如下: ```` import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; import org.apache.commons.lang3.StringUtils; import org.hibernate.annotations.*; import javax.persistence.*; import javax.persistence.Entity; import javax.persistence.Table; import java.time.Instant; import java.util.HashSet; import java.util.List; import java.util.Set; @Setter @Getter @EqualsAndHashCode(of...
  
merge,也就是再符合乐观锁的前提下 做覆盖
因使用了Lombok @Builder注解,成员变量的初始化表达式将会被忽略,如果希望将初始化表达式设置为默认值,使用@Builder.Default注解,如果不希望改变属性值,使字段变为final; https://blog.csdn.net/yueloveme/article/details/103276381
猜想可能session默认的作用域不对,在调用getOne()的方法上面加一个 @Transaction的事务注解