Java 如何从CollectionTable | Hibernate(Jpa)中删除数据
我有一个带有Java 如何从CollectionTable | Hibernate(Jpa)中删除数据,java,hibernate,jpa,uielementcollection,Java,Hibernate,Jpa,Uielementcollection,我有一个带有列表MyList的“A”实体: @Entity(name = "A_table") @Inheritance(strategy=InheritanceType.JOINED) public class A implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO)
列表MyList
的“A”实体:
@Entity(name = "A_table")
@Inheritance(strategy=InheritanceType.JOINED)
public class A implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String RepresentativeName;
@ElementCollection
@CollectionTable(name = "MyList_Table")
private List<String> MyList;
}
我应该如何正确表述查询?可能还有其他方法可以删除此CollectionTable数据? -------------------------------------
更新: 当我使用时:
List objectList=em.createQuery(“从一个表”).getResultList()代码>
->我收到错误:
未[从\u表]映射\u表。
所以我决定保留这一行:
List objectList=query.getResultList()
但是,如果我试图删除它:
for (A a:objectList)
{
if(....)
{
List<String> Mylist = a.getMyList();
em.getTransaction().begin();
em.remove(Mylist);
em.getTransaction().commit();
}
}
因此,我尝试添加“@IndexColumn
”注释:
.....
@ElementCollection
@CollectionTable(name = "A_Table")
@IndexColumn(name= "indx")
private List<String> MyList;
...
我该怎么办?
非常感谢 首先,必须从父表恢复元素,即:
List<A> objectList = em.createQuery("from A").getResultList();
// It would be neccesary to cast the result list
如果对您不起作用,您可以使用CriteriaQuery:
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<A> criteriaQuery = criteriaBuilder.createQuery(A.class);
criteriaQuery.from(A.class);
Query query = em.createQuery(criteriaQuery);
List<A> objectList = query.getResultList();
CriteriaBuilder-CriteriaBuilder=em.getCriteriaBuilder();
CriteriaQuery它没有帮助。。。当我进入第一行(List objectList=em.createQuery(“从A”).getResultList();)时,仍然出现错误:A未映射[从A]@Genzott您可以发布您收到的错误吗?A未映射[来自A]。我已更新我的答案,以向您展示恢复数据的另一种方法以及映射可能出现的问题。好的,第二个选项不会返回错误。但是行:objectList.getMyList().clear();不会从CollectionTable中删除数据。解决方案如下:[[1]:
.....
@ElementCollection
@CollectionTable(name = "A_Table")
@IndexColumn(name= "indx")
private List<String> MyList;
...
org.hibernate.MappingException: Unknown entity: org.hibernate.collection.PersistentList
List<A> objectList = em.createQuery("from A").getResultList();
// It would be neccesary to cast the result list
objectList.getMyList().clear();
...
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<A> criteriaQuery = criteriaBuilder.createQuery(A.class);
criteriaQuery.from(A.class);
Query query = em.createQuery(criteriaQuery);
List<A> objectList = query.getResultList();
List<A> objectList = em.createQuery("from A_table").getResultList();
List<String> Mylist = a.getMyList();
em.getTransaction().begin();
for (String element:Mylist){
em.remove(element);
}
em.getTransaction().commit();