Java Hibernate-如何在数据库中将具有pk和fk的对象设置为VARCHAR?

Java Hibernate-如何在数据库中将具有pk和fk的对象设置为VARCHAR?,java,hibernate,sqlite,persistence,Java,Hibernate,Sqlite,Persistence,我有两个实体,第一个是: @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, reference

我有两个实体,第一个是:

@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\u TYPE
列上使用
columnDefinition=“VARCHAR(32)”
;但是,在数据库中,它正在创建一个
cfg\u type
integer列。是否可以创建
VARCHAR cfg_type
列而不是整数?如果是,怎么做?我使用的是Sqlite 3.8.10.1版本

更新:
该链接没有帮助,但是如果我在
E\u CMS\u CFG
中将
@Id
替换为
@naturaid(mutable=false)
,它可以工作,但创建时没有主键

您可以尝试在此处使用自然id注释。例如:

@NaturalId (mutable = false)
@Column(name = "CFG_TYPE", unique = true, nullable = false, length = 32)
private String cfgType;
但我认为您仍然需要提供一个id属性,并且它仍然是数据库中的整数值/列

我认为这个问题是重复的


我希望这有帮助

@fandrow查看我的编辑。我认为你的问题可能是重复的。只需遵循我提供的链接。这并没有帮助我创建链接,但如果我在E_CMS_CFG中用naturaid(mutable=false)替换Id,它可以工作,但它在没有pkOK的情况下创建,这就是我的意思。是的,我认为您仍然需要提供一个额外的Id属性,hibernate可以在内部将其用作pk。这仍然是一个整数值。是的,现在我用NaturalId hoply做的,将来没有给出任何应用程序