ManyToOne与String字段的关系

时间:2015-01-07 14:43:52

标签: java sql database hibernate

我有两个课程:TranscriptionServiceTranscriptionConfig

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

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

有两个数据库表:transcriptionConfigtranscriptionServicestranscriptionConfigserviceName字段nametranscriptionServicesserviceName之间有一个外键。

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

serviceName @ManyToOne @JoinColumn(name = "serviceName", nullable = false) private String transcriptionService; 内的当前hibernate代码如下:

String

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

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

我如何使用此{{1}}关系,但只是传递名称的字符串?

1 个答案:

答案 0 :(得分:1)

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

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

修改 你得到这个例外,因为你在外表中没有这个键。首先,您需要在TranscriptionService表中创建行。