我試圖通過 idfindById方法獲取行,但它沒有成功,無法在 DB 中找到行。當我findAll之前打電話時findById工作正常。我使用 PostgreSQL。public void updateOffer(OrderOfferDTO orderOfferDTO) { // List<OrderOfferEntity> all = orderOfferRepository.findAll(); OrderOfferEntity orderOfferEntity = orderOfferRepository.findById(orderOfferDTO.getId()).orElse(null); assert(orderOfferEntity != null); if (!isCanOfferUpdate(orderOfferEntity)) return; orderOfferEntity.setNumberOffer(orderOfferEntity.getNumberOffer() + 1); orderOfferEntity.setOfferDelivery(orderOfferDTO.getOfferDelivery()); orderOfferEntity.setOfferPickup(orderOfferDTO.getOfferPickup()); orderOfferRepository.save(orderOfferEntity); }資料庫@Repositorypublic interface OrderOfferRepository extends JpaRepository<OrderOfferEntity, Long> { OrderOfferEntity findByUserEntityAndOrderEntity(UserEntity userEntity, OrderEntity orderEntity); List<OrderOfferEntity> findByUserEntityNotAndOrderEntity(UserEntity supplierEntity, OrderEntity orderEntity); List<OrderOfferEntity> findByOrderEntity(OrderEntity orderEntity); List<OrderOfferEntity> findByUserEntity(UserEntity userEntity);}實體@Entity@Table(name = "AUCTION_SUPPLIER")@Datapublic class OrderOfferEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "NUMBER_OFFER") private Integer numberOffer; @Column(name = "OFFER_PICKUP") private Integer offerPickup; @Column(name = "OFFER_DELIVERY") private Integer offerDelivery; @Column(name = "IS_ACCEPTED") private Boolean isAccepted; @ManyToOne(optional = false) @JoinColumn(name = "DELIVERY_PROGRESS_ID") private DeliveryProgressEntity deliveryProgressEntity; @ManyToOne @JoinColumn(name = "SUPPLIER_ID", nullable = false) private UserEntity userEntity; @ManyToOne @JoinColumn(name = "CUSTOMER_ORDER_ID", nullable = false) private OrderEntity orderEntity; @ManyToOne @JoinColumn(name = "FACTORY_ID", nullable = false)}
1 回答

喵喵時光機
TA貢獻1846條經驗 獲得超7個贊
您所有的 ManyToOne 關系都是非可選的或非空的。
所以 Hibernate 生成 INNER JOINS。您必須確保您的數據遵循此規則。
如果您定義非可選或非空關系,您還應該對數據庫表中的外鍵設置 NOT NULL 約束。
添加回答
舉報
0/150
提交
取消