繁体   English   中英

与字符串字段的ManyToOne关系

[英]ManyToOne relationship with a String field

我有两个类: TranscriptionServiceTranscriptionConfig

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

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

有两个数据库表: transcriptionConfigtranscriptionServices transcriptionConfig在其字段serviceNametranscriptionServices内部的name之间具有外键。

管理员应该能够在transcriptionConfig设置serviceName的字符串值。 然后,这将引用transcriptionServices name内的等效字符串。 数据库中的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表中创建行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM