【问题标题】:@ElementCollection: Error Could not determine type for: java.util.Set, for columns@ElementCollection:错误无法确定类型:java.util.Set,用于列
【发布时间】:2013-07-26 14:07:45
【问题描述】:

这是我的实体类

    @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:

【问题讨论】:

  • 重复问题:stackoverflow.com/questions/6164123/… 使用java.util.List 修复了它
  • 不是重复的。我想使用集合。收藏选择有问题吗?
  • 即使我改变了它。我得到同样的错误。请问还有什么建议吗?
  • 你使用什么版本的 Hibernate?
  • Hibernate 3. 我应该使用升级版吗?不过这只是为了练习。

标签: java hibernate exception


【解决方案1】:

@ElementCollection 是 JPA 2.0 的一部分,Hibernate 从 3.5 版开始支持。

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

【讨论】:

  • 我也尝试过@CollectionOfElements。但同样的问题。我不知道为什么,因为我是新来的。
【解决方案2】:

尝试使用@org.hibernate.annotations.CollectionOfElements 来代替@javax.persistence.ElementCollection 注解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2016-09-20
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    相关资源
    最近更新 更多