我应该在这里使用什么注释?@OneToMany 或@OneToOne?

What annotation should I use here ?@OneToMany or @OneToOne?

class StockPlace{
    private Stock stock;
    private Place place;
}

所以这个 class 描述了特定地点的特定股票,它可以更改为 time.Like 一个地方可以包含另一只股票,但在给定时间只有一个股票在一个地方并且那个地方只包含那只股票。我在定义我应该使用的注释时遇到了麻烦,有人可以帮忙吗?

Like a place can contain another stock but at a given time only one stock is in a place and that place contains only that stock

你有点不清楚,但如果我没看错,你说的是在特定位置只能有一只股票的情况?
一个地方可以包含另一个股票,但只有在原始股票从那个地方被删除之后?
我假设 StockPlace 也将是一种具有单一股票当前位置的实体。

如果是,那么两个字段都使用 @OneToOne,因为它定义了 class 之间的关系,即 Place 和 Stock 只能存在一个 row/record StockPlace反之亦然。意思是,在持久化 StockPlace 时必须使用唯一的库存和唯一的位置。在这里,如果您尝试将 StockPlace 与已经保存的地点或股票保存在一起。你会得到一个例外。

字段上的 @OneToMany 注释定义了声明带有该注释的字段的对象可以映射到许多记录的位置之间的关系。它主要(如果不是唯一的话)是指 class 可以有一个映射项目的集合。
例如,由于 described here 单个购物车可以包含多个项目,因此它将 List<Item> 映射到 @OneToMany 或者单个文章可以有多个评论。

为了涵盖同一地点可能有多个股票的情况,则地点字段应使用 @ManyToOne 注释,因为它表示单个地点记录可以分配给多个StockPlace 记录(因此许多股票可以在一个地方)。

我想,我真的没有得到这样的用例;P 因为在单个 Place 可以包含多个 Stock 和单个 Stock 的两种情况下,可以在 Stock class 中声明 Place class OneToOne 用于独特的 Stock/Place 组合,或者 ManyToOne 如果一个地方可以同时拥有多个库存。

看看这两个 SO 帖子:
setting the correct jpa mapping for shopping cart items and product
Hibernate ManyToOne vs OneToOne
有关所有这三个注释的一些不同解释和使用细节。