与 String 字段的 ManyToOne 关系
ManyToOne relationship with a String field
我有两个 class:TranscriptionService
和 TranscriptionConfig
。
TranscriptionConfig
有一个 serviceName
变量,它是一个字符串,带有 setter 和 getter。
TranscriptionService
在 class 到 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
class的实例,但我不想transcriptionConfig
包含这个目的。它只需要一个名称的参考。
如何使用这个 ManyToOne
关系,但只传递名称的字符串?
如果将此列视为字符串值,则无需定义映射@ManyToOne
并使用@JoinColumn
。标记为@Column
.
您可能需要在您的 DAO 中捕获 SQLException
来处理外键约束。
编辑:
你得到这个异常,因为你在外国 table 中没有这个键。首先,您需要在 TranscriptionService
table.
中创建行
我有两个 class:TranscriptionService
和 TranscriptionConfig
。
TranscriptionConfig
有一个 serviceName
变量,它是一个字符串,带有 setter 和 getter。
TranscriptionService
在 class 到 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
class的实例,但我不想transcriptionConfig
包含这个目的。它只需要一个名称的参考。
如何使用这个 ManyToOne
关系,但只传递名称的字符串?
如果将此列视为字符串值,则无需定义映射@ManyToOne
并使用@JoinColumn
。标记为@Column
.
您可能需要在您的 DAO 中捕获 SQLException
来处理外键约束。
编辑:
你得到这个异常,因为你在外国 table 中没有这个键。首先,您需要在 TranscriptionService
table.