我有两个课程:TranscriptionService
和TranscriptionConfig
。
TranscriptionConfig
有一个serviceName
变量,这是一个带有setter和getter的字符串。
TranscriptionService
在类中没有TranscriptionConfig
的变量或引用。
有两个数据库表:transcriptionConfig
和transcriptionServices
。 transcriptionConfig
在serviceName
字段name
和transcriptionServices
内serviceName
之间有一个外键。
管理员应该能够在transcriptionConfig
内设置name
的字符串值。然后,它会引用transcriptionServices
中transcriptionServices
内的等效字符串。数据库中的transcriptionConfig
条目是手动预定义的,因此不需要使用对象进行设置。
我serviceName
@ManyToOne
@JoinColumn(name = "serviceName", nullable = false)
private String transcriptionService;
内的当前hibernate代码如下:
String
但是,它不允许我这样做,因为target-entity
不是实体。我尝试添加manyToOne
无济于事。
似乎有TranscriptionService
关系,它需要有transcriptionConfig
类的实例,但我不希望ManyToOne
包含此对象。它只需要带有名称的引用。
我如何使用此{{1}}关系,但只是传递名称的字符串?
答案 0 :(得分:1)
如果您将此列视为字符串值,则无需定义映射@ManyToOne
并使用@JoinColumn
。只需按@Column
标记即可。
您可能需要在DAO中捕获SQLException
来处理外键约束。
修改强>
你得到这个例外,因为你在外表中没有这个键。首先,您需要在TranscriptionService
表中创建行。