我有两个类:TranscriptionServiceTranscriptionConfig

TranscriptionConfig有一个serviceName变量,它是一个字符串,带有设置程序和获取程序。

TranscriptionService在类中没有变量或对TranscriptionConfig的引用。

有两个数据库表:transcriptionConfigtranscriptionServicestranscriptionConfig在其字段serviceNamename内部的transcriptionServices之间具有外键。

管理员应该能够在serviceName内部设置transcriptionConfig的字符串值。然后,它引用nametranscriptionServices内的等效字符串。数据库中的transcriptionServices条目是手动预定义的,因此无需使用对象进行设置。

我当前在transcriptionConfig内的serviceName休眠代码如下:

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


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

它似乎有一个manyToOne关系,它需要一个TranscriptionService类的实例,但是我不希望transcriptionConfig包含此对象。它只需要带有名称的引用即可。

我如何使用这种ManyToOne关系,而只是将字符串作为名称传递?

最佳答案

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

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

编辑:
您会收到此异常,因为在外部表中没有此键。首先,您需要在TranscriptionService表中创建行。

关于java - 与字符串字段的ManyToOne关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27821929/

10-10 03:41