我在JavaEE(泽西)与JPA的应用程序,我有一个问题与未初始化的实体。我有3个实体汽车,业主,房子,汽车可以有多个业主和业主可以有多个房子。当我返回(entityManager.find)汽车然后车主被初始化。当我返回房子然后业主初始化,但车不是。我希望能够调用House.getOwner(). getCar(). getId()。现在我必须打电话给House,然后打电话给Owner以获得Car。我该如何解决这个问题?
@Entity
@Table(name = "House")
public class HouseEntity {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "owner_id", nullable = false)
private OwnerEntity owner;
}
@Entity
@Table(name = "Owner")
public class OwnerEntity {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "car_id")
private CarEntity car;
@OneToMany(mappedBy = "owner")
@JoinColumn(name = "house", nullable = false)
private Set<HouseEntity> house;
}
@Entity
@Table(name = "Car")
public class CarEntity {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@OneToMany(mappedBy = "owner")
private Set<OwnerEntity> owner;
}
Edit1:很抱歉,在映射中出现了错误,类运行良好。但初始化的问题仍然存在。
试试这个:
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name = "House")
public class HouseEntity {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@ManyToOne
@JoinColumn(name = "owner_id", nullable = false)
private OwnerEntity owner;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public OwnerEntity getOwner() {
return owner;
}
public void setOwner(OwnerEntity owner) {
this.owner = owner;
}
}
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name = "Owner")
public class OwnerEntity {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@ManyToOne
@JoinColumn(name = "car_id")
private CarEntity car;
@OneToMany(mappedBy = "owner", fetch = FetchType.EAGER)
private Set<HouseEntity> houses;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public CarEntity getCar() {
return car;
}
public void setCar(CarEntity car) {
this.car = car;
}
public Set<HouseEntity> getHouses() {
return houses;
}
public void setHouses(Set<HouseEntity> houses) {
this.houses = houses;
}
}
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name = "Car")
public class CarEntity {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@OneToMany(mappedBy = "car", fetch = FetchType.EAGER)
private Set<OwnerEntity> owner;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public Set<OwnerEntity> getOwner() {
return owner;
}
public void setOwner(Set<OwnerEntity> owner) {
this.owner = owner;
}
public void addOwner(OwnerEntity owner){
this.owner.add(owner);
}
}
当您获取汽车时,将填充整个对象图。
问题内容: 我有一个我认为应该很普遍的问题,但找不到答案。 我有2个对象:组和用户。我的课程如下所示: 现在,当我尝试从数据库中获取用户时,它带来了所有组,所有组都带来了所有用户,依此类推。最后,我遇到了stackoverflow异常。 如何解决此问题,并且仍然具有双向关联以及到达列表中对象的能力? 问题答案: 如果使用属性(无论如何都应使用)将双向关联的一侧设为关联的 拥有 侧,是否会遇到相同的
我有对象主位置和主国家/地区 MasterLocation.java 主位置存储库.java 为什么对象MasterCountries仍然加载在findByLocationNameLikeIgnoreCase上?如何在此存储库中禁用获取主国家/地区? 谢谢
问题内容: 我有四个表: 和类似的实体结构: 我需要一个查询将返回所有与它在表和孩子初始化。该是预先抓取,但孩子们是懒牵强。 我知道如何编写查询,将查询表的直接子级并相应地对其进行初始化。但是,我不知道如何获取从顶层表急切获取的表的子级。 我已经尝试过类似的东西: 但是,这总是给我一个错误,即所有者不是SELECT的一部分。 任何帮助是极大的赞赏。 问题答案: Hibernate参考 我们可能需要
问题内容: 为什么我不能将EAGER提取用于同一目的 问题答案: 最后,您可以使用EAGER提取来获得相同的结果。但这意味着 总会 热切地加载东西(相对于您只需要加载)。这是你想要的吗? 参考文献 Hibernate Core参考指南 20.1.4。初始化集合和代理
问题内容: hibernate的新手。 我有用户组多对多关系。三个表:User,Group和UserGroup映射表。 实体: 注意,在组实体中,我正在使用获取方法EAGER。现在,当我打电话给DAO时,请使用以下条件来检索系统中的所有组: 我从mappgin表(用户组)获取所有行,而不是获取组的实际数量… 例如,如果我在用户表中 在组表中 在用户组表中 结果将是以下列表-{grp1,grp2,g
我有一个tome服务器,从Android,我可以调用GET方法,效果很好。现在我尝试使用排球库发布一个实体,其中包含一个字段java.util.Date,但在服务器中我得到: 我试图覆盖johnzon转换器,如下所示: 在resources.xml中: 在开放jb-jar中.xml 在pojo部署中,我给出了一个类似“test”的随机名称 然后在我的实体中: 我从这里发现了这个配置 但问题仍然存在