Java 休眠一对一PrimaryKeyJoinColumn类的错误类型

Java 休眠一对一PrimaryKeyJoinColumn类的错误类型,java,hibernate,lazy-loading,one-to-one,Java,Hibernate,Lazy Loading,One To One,我有两个实体和它们之间的关系,一个是: @Entity @Getter @Setter public class Master { @Id private String id; private String name; @OneToOne(fetch = FetchType.LAZY, mappedBy = "master", optional = false) private Slave slave; } @Entity @Getter @Sett

我有两个实体和它们之间的关系,一个是:

@Entity
@Getter
@Setter
public class Master {
    @Id
    private String id;

    private String name;

    @OneToOne(fetch = FetchType.LAZY, mappedBy = "master", optional = false)
    private Slave slave;
}

@Entity
@Getter
@Setter
public class Slave {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "id_slave")
    private Integer id;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "id_master")
    @PrimaryKeyJoinColumn
    private Master master;
}

  MAIN:
  Master master = em.find(Master.class, "TEST_ID");
当我运行这段代码时,我得到

java.lang.IllegalArgumentException: Provided id of the wrong type for class entity.Slave. Expected: class java.lang.Integer, got class java.lang.String

我知道这是由于@PrimaryKeyJoinColumn存在,谁知道如何防止这个异常,以及是否有可能指出PrimaryKeyJoinColumn的类型。我无法删除@PrimaryKeyJoinColumn,因为我想要懒惰。

懒惰与@PrimaryKeyJoinColumn注释之间有什么关系?你能加上你的桌子吗?我认为您以错误的方式使用了该注释。在“JavaPersistencewithHibernate”中,当从机的主键也是指向主机主键的外键时,使用该注释。你的情况似乎不是这样,一个主人只有一个奴隶。你知道吗,如果你不把@PrimaryKeyJoinColumn和optional=false放在一起,懒惰是不起作用的?不,我不知道这个事实。你能提供一些关于这个问题的附加信息的链接吗?我在jpajavadocs上没有发现有这样的东西。我提到的那本书也是如此。您尚未显示表结构。在数据库中,这些主从是如何关联的?好的。你可以在这里读到-。主机上的FK在从属表中。感谢链接。我不是在讨论在Master上使用“optional=false”的好处。再次阅读我的第一条评论。为什么需要@PrimaryKeyJoinColumn?我认为“当从机的主键也是指向主机主键的外键时,使用该注释”。这是你的情况吗?您是否尝试删除该批注?