Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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 org.hibernate.MappingException在hibernate中存储集合时发生异常_Java_Hibernate_Exception - Fatal编程技术网

Java org.hibernate.MappingException在hibernate中存储集合时发生异常

Java org.hibernate.MappingException在hibernate中存储集合时发生异常,java,hibernate,exception,Java,Hibernate,Exception,下面是我的实体类 @Entity @Table(name = "USER_DETAILS") public class UserDetails { @Id private int userId; @Column (name="USER_NAME") private String userName; @Temporal(TemporalType.DATE) private Date date; @ElementCollection private Set<Address> str

下面是我的实体类

@Entity 
@Table(name = "USER_DETAILS")
public class UserDetails {

@Id 
private int userId;
@Column (name="USER_NAME")
private String userName;
@Temporal(TemporalType.DATE)
private Date date;
@ElementCollection
private Set<Address> streetAddress = new HashSet<Address>();


public Set<Address> getStreetAddress() {
    return streetAddress;
}
public void setStreetAddress(Set<Address> streetAddress) {
    this.streetAddress = streetAddress;
}
public Date getDate() {
    return date;
}
public void setDate(Date date) {
    this.date = date;
}
public int getUserId() {
    return userId;
}
public void setUserId(int userId) {
    this.userId = userId;
}
public String getUserName() {
    return userName;
}
public void setUserName(String userName) {
    this.userName = userName;
}

}
下面是主要课程

public class HibernateMain {

public static void main(String[] args) {

    Address address = new Address();
    address.setCity("Pune");
    address.setPin("1232");

    Address homeAddress = new Address();
    homeAddress.setCity("home_Pune");
    homeAddress.setPin("home_1232");

    UserDetails user = new UserDetails();
    user.setUserId(3);
    user.setUserName("Second user");
    user.setDate(new Date());

    user.getStreetAddress().add(address);
    user.getStreetAddress().add(homeAddress);

    Configuration cfg = new Configuration().configure("hibernate.cfg.xml");

    SessionFactory sf = cfg.buildSessionFactory(new ServiceRegistryBuilder()
                           .applySettings(cfg.getProperties()).build());

    Session session = sf.openSession();
    session.beginTransaction();
    session.save(user);
    session.getTransaction().commit();
    session.close();
}
}
在运行时引发异常

Exception in thread "main" org.hibernate.MappingException: Could not determine type for: com.example.model.Address, at table: UserDetails_streetAddress, for columns: [org.hibernate.mapping.Column(streetAddress)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:336)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:310)
at org.hibernate.mapping.Collection.validate(Collection.java:315)
at org.hibernate.mapping.Set.validate(Set.java:40)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1362)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1849)
at com.example.hibernate.HibernateMain.main(HibernateMain.java:36)
我正在使用Hibernate4.3和MySQL作为数据库。如果我不使用collection,那么它对rest有效。代码有什么问题吗

编辑:

还有一个问题。我是否使用正确的代码将我的hibernate版本的SessionFactory作为IDE显示为ServiceRegistryBuilder类作为去擦洗的
感谢您的帮助。

必须使用映射注释对
地址
类进行注释。特别是,
@embeddeble
,必要时,
@Column
映射到数据库中的相应列

@Embeddable
public class Address {

    private String city;
    private String pin;

    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public String getPin() {
        return pin;
    }
    public void setPin(String pin) {
        this.pin = pin;
    }

}

@axtavt感谢您的帮助谢谢。请您为编辑后的问题提供一些建议。@PrashantShilimkar请参见:
@Embeddable
public class Address {

    private String city;
    private String pin;

    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public String getPin() {
        return pin;
    }
    public void setPin(String pin) {
        this.pin = pin;
    }

}