hibernate - 为 mysql 连接创建一个字符串类型的主键

hibernate - create a primary key of string type for mysql connection

我正在尝试创建一个列 'Barcode' 作为主键,类型为字符串。

这就是我正在做的事情:

// for table-one
    @Id
    @Column(name = "BARCODE", nullable=false)
    private String barcode;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "BARCODE")
    private List<Doc_Mvmnt> doc_mvmnt = new ArrayList<>();

在另一个地方 table-one 将具有一对多映射

//for table-two
    @ManyToOne
    @JoinColumn(name = "BARCODE", nullable=false)
    public String barcode;

我收到异常: Exception in thread "main" org.hibernate.AnnotationException: @OneToOne or @ManyToOne on database.Doc_Mvmnt.barcode references an unknown entity: java.lang.String

我假设您的 table-one 对象实际上是您的 Barcode 对象,并且上面有一个 @Entity 注释。

那么,你的table-二对象就是你的Doc_Mvmnt对象。问题是您正在针对 String 对象(根据您的错误,这不是实体)建立 @ManyToOne 关系。相反,将 'String' 更改为 'Barcode'。我还冒昧地将其设为私有成员,尽管 public 也应该有效。

它应该是这样的:

//for table-two
@ManyToOne
@JoinColumn(name = "BARCODE", nullable=false)
private Barcode barcode;