I have a two entities and relation between them OneToOne:
@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");
When I run this code I get
java.lang.IllegalArgumentException: Provided id of the wrong type for class entity.Slave. Expected: class java.lang.Integer, got class java.lang.String
I see that is due to @PrimaryKeyJoinColumn exists, who knows how to prevent this exception and if it is possible to point out type for PrimaryKeyJoinColumn. I can not remove @PrimaryKeyJoinColumn cause I want to have laziness.