在 Java 个实体上调用数据库函数
Call DB Function on Java Entity
我试过使用@Formula,但数据库中的结果为空。所以我的问题是我们如何在@PrePersist 或@Formula 中使用某些函数?
我们有其他解决方案吗?
@Id
@JsonProperty("id")
private String id;
@Formula(value = "someschema.somefunction(`name`)")
@JsonProperty("name")
private String name;
@PrePersist
protected void onCreate(){
this.id = String.valueOf(UUID.randomUUID());
}
答案是
- 我们不能使用
@Formula
来使用函数插入数据,例如
@Modifying
@Query(value = "insert into customer " +
"(name, description, phone, id) " +
"VALUES (somefunction.encode_user(:name, 10, 'AES256', 'T', 'C'), " +
":description, " +
":phone, " +
":id)", nativeQuery = true)
@Transactional
void insertCustomer(
@Param("id") String id,
@Param("name") String Name,
@Param("description") String Description,
@Param("phone") String Phone
);
- 我们只能将
@Formula
用于查询功能。
我试过使用@Formula,但数据库中的结果为空。所以我的问题是我们如何在@PrePersist 或@Formula 中使用某些函数? 我们有其他解决方案吗?
@Id
@JsonProperty("id")
private String id;
@Formula(value = "someschema.somefunction(`name`)")
@JsonProperty("name")
private String name;
@PrePersist
protected void onCreate(){
this.id = String.valueOf(UUID.randomUUID());
}
答案是
- 我们不能使用
@Formula
来使用函数插入数据,例如
@Modifying
@Query(value = "insert into customer " +
"(name, description, phone, id) " +
"VALUES (somefunction.encode_user(:name, 10, 'AES256', 'T', 'C'), " +
":description, " +
":phone, " +
":id)", nativeQuery = true)
@Transactional
void insertCustomer(
@Param("id") String id,
@Param("name") String Name,
@Param("description") String Description,
@Param("phone") String Phone
);
- 我们只能将
@Formula
用于查询功能。