Hibernate - 如何在数据库中将具有 pk 和 fk 的对象设置为 VARCHAR?
Hibernate - How to set an object which has pk and fk to be VARCHAR in database?
我有两个实体,第一个是:
@Entity
@Table(name="E_CMS_CFG")
public class E_CMS_CFG extends BaseEntity{
@Id
@OneToOne(cascade=CascadeType.ALL)//, fetch = FetchType.EAGER)
@JoinColumns({
@JoinColumn(name = "CFG_TYPE", nullable = false, referencedColumnName = "CFG_TYPE", columnDefinition = "VARCHAR(32)"),
@JoinColumn(name = "CFG_TYPE_ID", nullable = false, referencedColumnName = "ID")
})
private E_CMS_CFG_TYPE cfgType;
第二个实体是:
@Entity
@Table(name="E_CMS_CFG_TYPE")
public class E_CMS_CFG_TYPE extends BaseEntity{
@Id
@Column(name = "CFG_TYPE", length = 32)
private String cfgType;
在第一个实体中,我在 CFG_TYPE
列上使用 columnDefinition = "VARCHAR(32)"
;但是,在数据库中,它正在创建一个 cfg_type
整数列。是否可以创建 VARCHAR cfg_type
列而不是整数?如果是,怎么办?我使用的是 Sqlite 3.8.10.1 版本。
更新:
link 没有帮助,但如果我将 E_CMS_CFG
中的 @Id
替换为 @NaturalId (mutable = false)
,它可以工作,但它创建时没有主键。
你可以在这里尝试使用自然标识注解。例如:
@NaturalId (mutable = false)
@Column(name = "CFG_TYPE", unique = true, nullable = false, length = 32)
private String cfgType;
但我认为您仍然需要提供一个 ID 属性,并且它在您的数据库中仍然是一个整数 value/column。
我认为这个问题与 "how to use id with string type in jpa hibernate"
重复
希望对您有所帮助!
我有两个实体,第一个是:
@Entity
@Table(name="E_CMS_CFG")
public class E_CMS_CFG extends BaseEntity{
@Id
@OneToOne(cascade=CascadeType.ALL)//, fetch = FetchType.EAGER)
@JoinColumns({
@JoinColumn(name = "CFG_TYPE", nullable = false, referencedColumnName = "CFG_TYPE", columnDefinition = "VARCHAR(32)"),
@JoinColumn(name = "CFG_TYPE_ID", nullable = false, referencedColumnName = "ID")
})
private E_CMS_CFG_TYPE cfgType;
第二个实体是:
@Entity
@Table(name="E_CMS_CFG_TYPE")
public class E_CMS_CFG_TYPE extends BaseEntity{
@Id
@Column(name = "CFG_TYPE", length = 32)
private String cfgType;
在第一个实体中,我在 CFG_TYPE
列上使用 columnDefinition = "VARCHAR(32)"
;但是,在数据库中,它正在创建一个 cfg_type
整数列。是否可以创建 VARCHAR cfg_type
列而不是整数?如果是,怎么办?我使用的是 Sqlite 3.8.10.1 版本。
更新:
link 没有帮助,但如果我将 E_CMS_CFG
中的 @Id
替换为 @NaturalId (mutable = false)
,它可以工作,但它创建时没有主键。
你可以在这里尝试使用自然标识注解。例如:
@NaturalId (mutable = false)
@Column(name = "CFG_TYPE", unique = true, nullable = false, length = 32)
private String cfgType;
但我认为您仍然需要提供一个 ID 属性,并且它在您的数据库中仍然是一个整数 value/column。
我认为这个问题与 "how to use id with string type in jpa hibernate"
重复希望对您有所帮助!