如何在 JPA 中保留 List<Object> 类型的 属性?
How to persist a property of type List<Object> in JPA?
获取包含持久化对象的列表的最佳方法是什么?我在 JPA 中使用 JavaEE 7。对象 B 也是一个实体。
我的模型
@Entity
public class ObjectA implements Serializable {
@Id @GeneratedValue
private Long id;
// What should I use here?
private List<ObjectB> objectList;
public ObjectA () {
this.objectList = new ArrayList<ObjectB>();
}
}
我的 JPA 调用
@Stateless
@JPA
public class ObjectJPA{
@PersistenceContext(unitName = "ObjectProjectPU")
private EntityManager em;
// How can I insert a record in the table for objectList here?
public void insertIntoObjectList(ObjectB objectB) {
em.persist(objectB); // This must be wrong?
}
}
我更喜欢 objectList 的数据库 table 如下所示:
id (ObjectA_id) | objectB_id or id | ObjectA_id | objectB_id
您的 ObjectA class 应该如下所示。
@Entity
public class ObjectA implements Serializable {
@Id @GeneratedValue
private Long id;
// What should I use here?
private List<ObjectB> objectList;
@OneToMany(mappedBy = "objectB_id")
public List<ObjectB> getObjectList() {
return objectList;
}
public void setObjectList(List<ObjectB> listOfObjetB) {
this.objectList = listOfObjetB;
}
public ObjectA () {
this.objectList = new ArrayList<ObjectB>();
}
}
这将在您的 class A 和 B 之间建立关系。
正确遵循下面给出的示例 link。它将帮助您理解 JPA 一对多关系。 :)
我发现这很简单。
ObjectA 模型
@OneToMany
@JoinTable
(
name="OBJECTA_OBJECTB",
joinColumns={ @JoinColumn(name="ID", referencedColumnName="ID") },
inverseJoinColumns={ @JoinColumn(name="OBJECTB_ID", referencedColumnName="ID") }
)
private List<ObjectB> objectList;
JPA 调用
public void insertIntoObjectList(ObjectB object) {
object.setSomeDataInObjectList(list); // just a random list here
em.persist(object);
}
ObjectB 模型
@ManyToOne
ObjectA objectA;
获取包含持久化对象的列表的最佳方法是什么?我在 JPA 中使用 JavaEE 7。对象 B 也是一个实体。
我的模型
@Entity
public class ObjectA implements Serializable {
@Id @GeneratedValue
private Long id;
// What should I use here?
private List<ObjectB> objectList;
public ObjectA () {
this.objectList = new ArrayList<ObjectB>();
}
}
我的 JPA 调用
@Stateless
@JPA
public class ObjectJPA{
@PersistenceContext(unitName = "ObjectProjectPU")
private EntityManager em;
// How can I insert a record in the table for objectList here?
public void insertIntoObjectList(ObjectB objectB) {
em.persist(objectB); // This must be wrong?
}
}
我更喜欢 objectList 的数据库 table 如下所示:
id (ObjectA_id) | objectB_id or id | ObjectA_id | objectB_id
您的 ObjectA class 应该如下所示。
@Entity
public class ObjectA implements Serializable {
@Id @GeneratedValue
private Long id;
// What should I use here?
private List<ObjectB> objectList;
@OneToMany(mappedBy = "objectB_id")
public List<ObjectB> getObjectList() {
return objectList;
}
public void setObjectList(List<ObjectB> listOfObjetB) {
this.objectList = listOfObjetB;
}
public ObjectA () {
this.objectList = new ArrayList<ObjectB>();
}
}
这将在您的 class A 和 B 之间建立关系。
正确遵循下面给出的示例 link。它将帮助您理解 JPA 一对多关系。 :)
我发现这很简单。
ObjectA 模型
@OneToMany
@JoinTable
(
name="OBJECTA_OBJECTB",
joinColumns={ @JoinColumn(name="ID", referencedColumnName="ID") },
inverseJoinColumns={ @JoinColumn(name="OBJECTB_ID", referencedColumnName="ID") }
)
private List<ObjectB> objectList;
JPA 调用
public void insertIntoObjectList(ObjectB object) {
object.setSomeDataInObjectList(list); // just a random list here
em.persist(object);
}
ObjectB 模型
@ManyToOne
ObjectA objectA;