与 String 字段的 ManyToOne 关系

ManyToOne relationship with a String field

我有两个 class:TranscriptionServiceTranscriptionConfig

TranscriptionConfig 有一个 serviceName 变量,它是一个字符串,带有 setter 和 getter。

TranscriptionService 在 class 到 TranscriptionConfig 中没有变量或引用。

有两个数据库表:transcriptionConfigtranscriptionServicestranscriptionConfig 在其字段 serviceNametranscriptionServices 中的 name 之间有一个外键。

管理员应该能够在 transcriptionConfig 中设置 serviceName 的字符串值。然后,这会引用 transcriptionServicesname 中的等效字符串。数据库中的 transcriptionServices 条目是手动预定义的,因此永远不需要使用对象进行设置。

我当前在 transcriptionConfig 中用于 serviceName 的休眠代码如下:

@ManyToOne
@JoinColumn(name = "serviceName", nullable = false)
private String transcriptionService;

但是,它不允许我这样做,因为 String 不是一个实体。我尝试添加 target-entity 无济于事。

似乎有一个manyToOne关系,它需要有一个TranscriptionServiceclass的实例,但我不想transcriptionConfig包含这个目的。它只需要一个名称的参考。

如何使用这个 ManyToOne 关系,但只传递名称的字符串?

如果将此列视为字符串值,则无需定义映射@ManyToOne并使用@JoinColumn。标记为@Column.

您可能需要在您的 DAO 中捕获 SQLException 来处理外键约束。

编辑: 你得到这个异常,因为你在外国 table 中没有这个键。首先,您需要在 TranscriptionService table.

中创建行