【发布时间】:2020-11-13 03:44:33
【问题描述】:
这是我的交易实体类
@Entity
@Getter
@Setter
@NoArgsConstructor
public class Transaction{
@Id
private int id;
@NotNull
@Enumerated(EnumType.STRING)
private TransactionSourceEnum source;
@NotNull
@Column(unique = true)
private String transactionId;
private String switchingId;
@JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss")
private LocalDateTime requestDate;
private String status;
}
这是仓库
public interface TransactionRepository extends JpaRepository<Transaction, Integer> {
Transaction findByTransactionIdAndTransactionSource(String transactionId, TransactionSourceEnum transactionSource);
@Modifying(clearAutomatically = true)
@Transactional
@Query(value = "DELETE FROM transaction WHERE transaction_cre_sys_date <= (now() - interval 6 month)",nativeQuery = true)
void deleteSixMonthOldTransactions();
void deleteByTransactionCreSysDateBefore(LocalDateTime date);
Boolean existsByTransactionId(String transactionId);
}
当我尝试用 @Id 注释 transactionSourceEnum 时,它说
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Composite-id class must implement Serializable: com.adl.et.telco.xlbss.paymentservice.domain.entities.Transaction
如何为source 和transactionId 定义复合主键并从代码中删除id 变量
【问题讨论】:
标签: java spring-boot spring-data-jpa spring-data