这是我的实体类
@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:
答案 0 :(得分:9)
@ElementCollection
是JPA 2.0的一部分,自3.5版以来Hibernate支持它。
如果您的Hibernate版本较旧,则需要升级它,或者使用类似的特定于Hibernate的注释(@CollectionOfElements
)。
答案 1 :(得分:0)
使用@ org.hibernate.annotations.CollectionOfElements而不是@javax.persistence.ElementCollection注释。