如果我的 id 是字符串,如何使用 deleteById jpa 存储库?
How to use deleteById jpa repository if my id is a String?
我需要使用其 ID 删除实体,尝试使用 JPA 存储库按 ID 删除方法
productRepository.deleteById(id);
其中“id”应该是 Long- 如果传递的字符串值会给出错误:Long expected
Sample id= "402880f17ebd7e44017ebd7fe9ee0000"
因此我无法将 String 转换为 Long
实体class
@Entity
@Table(name = "products")
public class Product {
@Id @GeneratedValue(generator = "system-uuid")
@GenericGenerator(name="system-uuid",strategy = "uuid")
@Column(name="product_id")
private String id;
@Column(name="price")
@NotNull
private float productPrice;
@Column(name="product_name")
@NotNull
private String productName;
@Column(name="description")
private String productDesc;
@Column(name="stock_available")
private int productStock;
@ManyToOne(optional = false)
@JoinColumn(name = "shop_id")
private Shop shop;
public Product(){
}
public Product(String id, float productPrice, String productName, String productDesc, int productStock, Shop shop) {
this.id = id;
this.productPrice = productPrice;
this.productName = productName;
this.productDesc = productDesc;
this.productStock = productStock;
this.shop = shop;
}
}
存储库Class:
@Repository
public interface ProductRepository extends JpaRepository<Product,Long>{
}
在您的 productRepository 中,将接口上的第二个通用类型从 long 更改为 string。所以更改你的代码片段
@Repository
public interface ProductRepository extends JpaRepository<Product,Long> {}
至:
@Repository
public interface ProductRepository extends JpaRepository<Product,String> {}
此外,对于 Spring 数据 JPA 接口,您不需要 @Repository
。
在您的 ProductRepository 中,当您扩展 JpaRepository<EntityName,EntityId Type>.
在您的情况下,您将字段 id 用作字符串,但将类型扩展为 Long。
要解决您的问题,请以 Long number 形式输入或将主键类型转换为 String。
主键类型错误,应该是'String',不是'Long':
@Repository
public interface ProductRepository extends JpaRepository<Product,String>{
}
我需要使用其 ID 删除实体,尝试使用 JPA 存储库按 ID 删除方法
productRepository.deleteById(id);
其中“id”应该是 Long- 如果传递的字符串值会给出错误:Long expected
Sample id= "402880f17ebd7e44017ebd7fe9ee0000"
因此我无法将 String 转换为 Long
实体class
@Entity
@Table(name = "products")
public class Product {
@Id @GeneratedValue(generator = "system-uuid")
@GenericGenerator(name="system-uuid",strategy = "uuid")
@Column(name="product_id")
private String id;
@Column(name="price")
@NotNull
private float productPrice;
@Column(name="product_name")
@NotNull
private String productName;
@Column(name="description")
private String productDesc;
@Column(name="stock_available")
private int productStock;
@ManyToOne(optional = false)
@JoinColumn(name = "shop_id")
private Shop shop;
public Product(){
}
public Product(String id, float productPrice, String productName, String productDesc, int productStock, Shop shop) {
this.id = id;
this.productPrice = productPrice;
this.productName = productName;
this.productDesc = productDesc;
this.productStock = productStock;
this.shop = shop;
}
}
存储库Class:
@Repository
public interface ProductRepository extends JpaRepository<Product,Long>{
}
在您的 productRepository 中,将接口上的第二个通用类型从 long 更改为 string。所以更改你的代码片段
@Repository
public interface ProductRepository extends JpaRepository<Product,Long> {}
至:
@Repository
public interface ProductRepository extends JpaRepository<Product,String> {}
此外,对于 Spring 数据 JPA 接口,您不需要 @Repository
。
在您的 ProductRepository 中,当您扩展 JpaRepository<EntityName,EntityId Type>.
在您的情况下,您将字段 id 用作字符串,但将类型扩展为 Long。
要解决您的问题,请以 Long number 形式输入或将主键类型转换为 String。
主键类型错误,应该是'String',不是'Long':
@Repository
public interface ProductRepository extends JpaRepository<Product,String>{
}