gpt4 book ai didi

java - 只是获取 id 列值而不是在 hibernate 对象中使用 join 一对多关系

转载 作者:搜寻专家 更新时间:2023-10-31 08:11:51 25 4
gpt4 key购买 nike

我正在使用 hibernate 4+。

我有两个示例表。

表A

public class A {
@Id
private int id;

@OneToMany(fetch=LAZY)
private List<B> list;

// skip getter&setter
}

表B

public class B {
@Id
private int id;

@ManyToOne(fetch=LAZY)
@JoinColumn(name="b_id")
private A a;

// skip getter&setter
}

表A(1) - (n)表B关系

我可以不使用连接就在对象 B 中获取 A 的 ID 吗?像这样的东西:

int aid = b.getA().getId(); // b is instance of B;

虽然我可以在声明类 B 时使用 int 值而不是 A。但是另一个服务层使用 A with join。

我可以只获取 id(fk) 值吗?

最佳答案

是的,因为无论如何代理都包含 id。要获取 A 代理的 id 而不对其进行初始化,首先声明要通过属性访问的 id:

@Entity
public class A {
@Id
@Access(AccessType.PROPERTY)
private int id;

@OneToMany(fetch=LAZY)
private List<B> list;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}
}

然后,读取id:

b.getA().getId();

更改 id 的访问类型是必要的,因为如果您使用字段访问,Hibernate 不会将 getId() 方法与其他普通方法(调用时触发代理初始化)区分开来。

关于java - 只是获取 id 列值而不是在 hibernate 对象中使用 join 一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32220951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com