Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从CollectionTable | Hibernate(Jpa)中删除数据_Java_Hibernate_Jpa_Uielementcollection - Fatal编程技术网

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();