每当我尝试获取连接对象时,它返回null。示例代码如下:
id
name
b_id
id
name
@Entity
@Table(name = "A")
public class A {
private Integer id;
@OneToOne
@JoinColumn(name = "b_id", nullable = false)
private B b;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer getId() {
return id;
}
public B getb() {
return b;
}
}
@Entity
@Table(name = "B")
public class B {
private Integer id;
private String name;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer getId() {
return id;
}
public String getname() {
return name;
}
}
当我使用getA(id).getB()
函数时,它返回null。当我使用getA
时,它返回一个有效的对象而不是null。
答案 0 :(得分:0)
你必须移动你的@Id和@GeneratedValue(策略= GenerationType.IDENTITY) 并放在你的id变量之上。
@Entity
@Table(name = "A")
public class A{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@OneToOne
@JoinColumn(name = "b_id", nullable = false)
private B b;
public Integer getId() {
return id;
}
public B getb() {
return b;
}
}
希望这会有所帮助。
答案 1 :(得分:0)
可能是你应该在joinColumn注释中将FetchType作为Eager给出,以便在加载时也加载对象B.
答案 2 :(得分:0)
您可以考虑使用更多注释属性,例如:
@OneToOne(cascade = CascadeType.ALL)
@JoinColum(name = "b_id" referencedColumnName = "id", nullable = false)
private B b;
答案 3 :(得分:0)
@Entity
@Table(name = "B")
public class B{
**@Column(name="b_id", nullable=false)**
private Integer id;
private String name;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer getId() {
return id;
}
public String getname() {
return name;
}
}
使用@Column(name =" b_id",nullable = false)