我目前正在用spring boot和mysql创建一个微服务来管理拍卖信息。我创建了一个bid
-对象和一个offer
-对象。除了bid和Offer的一些属性之外,这里最重要的是Offer和bid之间的OneTomany
-关系,因为显然每个Offer都可以有多个相关的bid。
我使用默认的jparepository
-接口进行数据库交互,并通过输入数据和测试是否能够得到正确的输出来测试数据库结构。这一切都运行良好,但当我试图测试输入数据的服务endpoint时,我得到了一些奇怪的行为。首先,这是我的结构,所以你们可以跟上我所说的。这些是我的bid
和offer
对象的(缩短)版本:
@Entity
@Data
public class Bid {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@NotNull
private String bidderUUID;
@NotNull
@JsonBackReference
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "offerId")
private Offer offer;
@NotNull
private Integer amount;
private Boolean hasWon;
}
@Entity
@Data
public class Offer {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
private String creatorUUID;
@JsonManagedReference
@OneToMany(mappedBy = "offer")
List<Bid> bids;
}
这是我非常简单的代表和控制器:
public interface BidRepository extends JpaRepository<Bid, Long> {
}
@RestController
@RequestMapping("/bid")
public class BidController {
@Autowired
private BidRepository bidRepository;
@GetMapping("/bids")
public List<Bid> getAllBids() {
return bidRepository.findAll();
}
@PostMapping("/add")
public void createBid(@RequestBody Bid request) {
bidRepository.saveAndFlush(request);
}
}
使用数据库中的ID27和offer,我继续向服务发送一个bid。
{
"amount": 2,
"bidderUUID": "eine uuid",
"offerId": 27
}
我收到了一个200 OK的响应,并且认为,似乎很好,但是数据库中的数据是错误的,因为它看起来是这样的:
我认为这个问题与以下事实有关:在发布新的bid时,我希望得到一个offer
-对象,但只给他ID;但当我输入整个对象时,我得到一个org.hibernate.PersistentObjectException:detached entity pass to Persist
。
当传输一个新的投标对象时,我如何使spring接受报价的id?
我也遇到了这个问题,所以作为解决方案,我添加了映射列作为实体变量。在您的例子中,如果我说,您的bid
实体缺少offer_id
列映射,尽管它提到了关系。在BID
表中添加以下条目,如下所示:
@Column(name = "offer_id")
private Long offerId;
// generate setter-getter
我有3分贝实体。产品-id,名称。/产品订单-id,日期。/Orders OrderDetail-OrderID,productId,Price。订单/{orderId}/orderDetails 谢了!
问题内容: 我需要一个创建对象的类,为每个创建的对象分配一个ID。通常,此ID是该类的int属性。我希望每次创建一个对象时都增加该值(ID),然后将其分配给从1开始的那个对象。这让我感到震惊,我需要一个静态int属性。 如何初始化此静态属性? 我是否应该创建一个单独的方法来进行ID的增量(作为ID生成器),该增量在构造函数内部调用? 通常,最有效和精心设计的方法是什么? 问题答案: 就像您提到的I
我有一个实体 我有这个错误
我有0编码知识,但希望你们可以协助修改我在网上找到的代码,以创建多个按钮来执行不同的bat文件。我会将其保存为hta文件,以便在win shell环境中运行。谢谢!!!
我目前用JavaFX制作了一个表单。我总是按一个按钮,我调用“addAnswer()”-方法。在其中,我创建了一个RadioButton、一个Label和一个deleteButton,我将它们捆绑在一个HBox中。我把所有的HBox都装在一个vBox中。现在的问题是删除按钮。我想深入研究点击按钮的HBox。 这是我的代码: 我在上面试过这个,但我意识到,所有的delAnswers-Button都有
问题内容: 我是Java的新手,并且开始使用Java 。我想做的是为学生创建一个。每个学生都有与其相关的不同属性()。我试图弄清楚如何使用此属性添加新的学生对象。这是我所拥有的: 问题答案: 您需要的是以下内容: