[英]ManyToOne relationship with a String field
我有两个类: TranscriptionService
和TranscriptionConfig
。
TranscriptionConfig
有一个serviceName
变量,它是一个带有setter和getter的字符串。
TranscriptionService
在类中没有变量或对TranscriptionConfig
引用。
有两个数据库表: transcriptionConfig
和transcriptionServices
。 transcriptionConfig
在其字段serviceName
和transcriptionServices
内部的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.