我有两个类:TranscriptionService
和TranscriptionConfig
。TranscriptionConfig
有一个serviceName
变量,它是一个字符串,带有设置程序和获取程序。TranscriptionService
在类中没有变量或对TranscriptionConfig
的引用。
有两个数据库表:transcriptionConfig
和transcriptionServices
。 transcriptionConfig
在其字段serviceName
和name
内部的transcriptionServices
之间具有外键。
管理员应该能够在serviceName
内部设置transcriptionConfig
的字符串值。然后,它引用name
中transcriptionServices
内的等效字符串。数据库中的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/