[英]Spring JpaRepository getOne() for table with PK as String
我正在使用帶有JpaRepository的Spring Boot。 我有一個表定義為一個字符串的PK。
CREATE TABLE mytable (
uuid uuid DEFAULT gen_random_uuid() PRIMARY KEY,
url text NOT NULL,
status status DEFAULT 'pending' NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
題
在JpaRepository中,我該如何做getOne(uuid)
的等效項? ( getOne(uuid)
收到參數類型Long),即,如何為String類型的uuid檢索一行?
碼
@Entity
@Table(name = "mytable")
public class MyTableEntity {
public enum Status {
pending,
complete,
processing,
failed
}
@Id
@Column(name = "uuid")
//@GeneratedValue(strategy = GenerationType.AUTO)
private String uuid;
@Column(name = "url", nullable = false)
private String url;
@Enumerated(EnumType.STRING)
@Column(columnDefinition = "photo_status", nullable = false)
//@Type( type = "pgsql_enum" )
private Status status;
@Column(name = "created_at", nullable = false)
private LocalDateTime created_at;
Repostory
public interface MyRepository extends JpaRepository<MyTableEntity, Long> {
}
因此,如果您的實體具有String鍵,則可以使用Repository
此類聲明:
@Repository
public interface MyRepository extends JpaRepository<MyTableEntity, String> {
}
現在,如果要通過id獲得實體(類型為String
,則可以使用例如:
private void someMethod() {
UUID uuid = UUID.randomUUID();
MyTableEntity myEntity = myRepository.getOne(uuid.toString());
}
如果您查看JpaRepository
定義,則它期望第一個類型是您的Entity類,第二個是該實體的鍵的類型:
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.