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;
我正在尝试创建一个列 '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;