Spring Jpa 表字段增加对保留字的支持

例如:entity为

@Data
@Entity
@Table(name = "wx_user_storage")
@ToString
public class UserStorage implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;
    @Column(name = "key")
    private String key;

}

Dao类为

public interface UserStorageDao extends JpaRepository<UserStorage, Long> {
    @Query("delete from UserStorage s where s.key = :key")
    @Modifying(clearAutomatically = true)
    @Transactional
    void clearUserKeys(@Param("key")String key);
}

测试为:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {DianliApplication.class}, webEnvironment = SpringBootTest.WebEnvironment.MOCK)
public class UserStorageDaoTest {
    @Autowired
    private UserStorageDao userStorageDao;

    @Test
    public void test1() {
        userStorageDao.clearUserKeys("key");
    }
}

在application.yaml中增加以下配置

spring:
  jpa:
    properties:
      hibernate:
        globally_quoted_identifiers: true

执行结果为:

Hibernate: delete from `wx_user_storage` where `key`=?

与预想一致

猜你喜欢

转载自www.cnblogs.com/linphy/p/11274165.html