关于hibernate:@ElementCollection:错误无法确定类型:java.util.Set,用于列

@ElementCollection: Error Could not determine type for: java.util.Set, for columns

这是我的实体类

1
2
3
4
5
6
7
8
9
10
11
12
13
    @Entity // Model Class as a DB entity
    public class UserDetails
    {
        @Id
        private int userId;
        private String name;

        @ElementCollection
        private Set<Address> listOfAddresses = new HashSet();

           // Setters and Getters Below

    }

这是我的地址课

1
2
3
4
5
6
7
8
9
10
    @Embeddable
    public class Address
    {
   private String Street;
   private String City;
   private String State;
   private String PinCode;

       // Setters and Getters Below
     }

AM使用一个独立的Java类来尝试插入到我的MySQL数据库中。因为,我是新冬眠的,我现在只想使用这个注释而不是关系。

我的独立Java类,名为HiBiNeTest.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
       public class HibernateTest
       {


      public static void main(String[] args)
          {
    UserDetails user = new UserDetails();
    Address addr = new Address();
    user.setUserId(1);
    user.setName("Swateek");

    addr.setCity("Berhampur");
    addr.setPinCode("760001");
    addr.setState("Odisha");
    addr.setStreet("RKN");

    user.getListOfAddresses().add(addr);

    Address addrOff = new Address();

    addrOff.setCity("Bangalore");
    addrOff.setPinCode("560037");
    addrOff.setState("MTH");
    addrOff.setStreet("YH");

    user.getListOfAddresses().add(addrOff);

    SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();


    Session session = sessionFactory.openSession();

    session.beginTransaction();
    session.save(user);
    session.getTransaction().commit();
       }

   }

现在,当我运行类hibernatest时,我发现这个异常即将出现。我不知道为什么。

1
    Exception in thread"main" org.hibernate.MappingException: Could not determine type for: java.util.Set, for columns:


@ElementCollection是JPA2.0的一部分,从3.5版开始Hibernate就支持它。

如果您的Hibernate版本较旧,则需要升级它,或者使用类似的Hibernate特定注释(@CollectionOfElements)。


尝试使用@org.hibernate.annotations.collectionfelements而不是@javax.persistence.elementcollection注释。