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

时间:2013-07-26 10:31:07

标签: java hibernate exception

这是我的实体类

    @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

    }

这是我的地址类

    @Embeddable
    public class Address 
    {
   private String Street;
   private String City;
   private String State;
   private String PinCode;

       // Setters and Getters Below
     }

使用独立的Java类尝试插入我的 MySQL 数据库。因为,我是Hibernate的新手,我只想使用这个注释而不是现在的关系。

我的独立Java类名为HibernateTest.java

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

   } 

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

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

2 个答案:

答案 0 :(得分:9)

@ElementCollection是JPA 2.0的一部分,自3.5版以来Hibernate支持它。

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

答案 1 :(得分:0)

使用@ org.hibernate.annotations.CollectionOfElements而不是@javax.persistence.ElementCollection注释。