【问题标题】:Clarification on Many to one Association关于多对一关联的说明
【发布时间】:2014-02-21 07:22:30
【问题描述】:

我有两个名为 Stock 和 stock_daily_record 的表。请在下面找到表结构

库存

Id(主键)Int

名称 varchar

stock_daily_record

Stockid(Stockid 的主键和外键)

Stock_price(主键)

我的实体类

@Entity  @Table(name = "stock")
class Stock 
{
  @id  @column(name=”id”)
  Private int id;

  @column(name=”name”)
  Private String name;

  @oneToMany(fetch = FetchType.LAZY)
  Private Set<DailyStockRecord> dailyRecords;

  //Getters and setters,equals
 }

我的下一课 DailyStockRecord 仅包含复合键。如何定义这两个类之间的映射。另外如何定义 DailyStockRecord 实体?

注意: 请不要考虑我的数据库设计,因为我试图通过这个虚拟设计来投射我的实际问题

【问题讨论】:

  • 您的数据库设计毫无意义。如果股票可以有很多记录,stock_id 不能是 stock_daily_record 表的主键:根据定义,主键必须是唯一的。添加另一列并将其设为主键,并将 stock_id 设为仅外键。

标签: java hibernate jpa orm


【解决方案1】:
@Entity  @Table(name = "stock_daily_record")
class StockDailyRecord 
{
  @id  @column(name=”Stockid”)
  Private int stockId;

  @column(name=”Stock_price”)
  Private String stockPrice;

  @ManyToOne(fetch = FetchType.LAZY)
  @joinColumn(name="id")
  Private Stock stock;

  //Getters and setters,equals
 }

【讨论】:

  • 感谢您的回复。会检查的
  • 这个建议也给了我以下错误Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property:
  • 能否提供此异常的完整堆栈跟踪
【解决方案2】:

试试这个配置

  @Entity
  @Table("stock_daily_record")
   public class DailyStockRecord

        @EmbeddedId
        private DailyStockId stockId;

        @MapsId("stockId")
        @ManyToOne
        private Stock stock; 

以及可嵌入的key如下:

@Embeddedable
public class DailyStockId 

    private int dailyStockId;
    private int stockId;

并将您的代码更新为

@Entity  
@Table(name = "stock")
public class Stock 

  @id  @column(name=”id”)
  Private int id;

  @column(name=”name”)
  Private String name;

  @OneToMany(fetch = FetchType.LAZY, mappedBy="stock" )
  Private Set<DailyStockRecord> dailyRecords;

  //Getters and setters,equals
 }

【讨论】:

  • 尝试此映射时出现以下错误原因:org.hibernate.AnnotationException: mappedBy reference an unknown target entity property:
猜你喜欢
  • 2016-12-09
  • 1970-01-01
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-29
  • 2019-05-06
相关资源
最近更新 更多