数据未使用spring-data在连接列中持久化

时间:2016-04-09 23:34:57

标签: java spring hibernate jdbc spring-data

休眠输出如下。

Hibernate:插入usernew(ACTIVE,EMAIL,FIRST_NAME,CGUID,LAST_NAME,MIDDLE_NAME,PIN)值(?,?,?,?,?,?,?)

Hibernate:插入usernew(ACTIVE,EMAIL,FIRST_NAME,CGUID,LAST_NAME,MIDDLE_NAME,PIN)值(?,?,?,?,?,?,?)

Hibernate:插入到eventnew(ACTIVE,ADDRESS,DESCRIPTION,END_TS,HOST_PHONE_NUMBER,IMAGE,LATITUDE,LONGITUDE,NAME,PLACE_ID,START_TS)值(?,?,?,?,?,?,?,?,? ,?,?)

User user = new User();
user.setActive(true);
user.setFirstName("test");
user.setLastName("test");
user.setPin("3333");
user.setEmail("n@f.com");
userRepositoryNew.save(user);

User user1 = new User();
user1.setActive(true);
user1.setFirstName("test");
user1.setLastName("test");
user1.setPin("3333");
user1.setEmail("nauman@f1.com");
userRepositoryNew.save(user1);

Event event = new Event();
event.setName("event");
event.setDescription("testing event");
event.setHostPhoneNumber("4455-33-990");
event.setLongitude("dddd");

EventUser eventUser = new EventUser();
eventUser.setUser(user);
eventUser.setEvent(event);

EventUser eventUser1 = new EventUser();
eventUser.setUser(user1);
eventUser.setEvent(event);

event.getEventUsers().add(eventUser);
event.getEventUsers().add(eventUser1);

eventRepositoryNew.save(event);

下面是代码,不确定为什么没有填充连接表。

 package com.hive.domain;

    import static javax.persistence.GenerationType.IDENTITY;

    import java.util.Date;
    import java.util.HashSet;
    import java.util.Set;

    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
    import javax.persistence.Transient;

    import org.codehaus.jackson.map.annotate.JsonDeserialize;
    import org.codehaus.jackson.map.annotate.JsonSerialize;

    import com.hive.json.marshaller.DateUTCDeserializer;
    import com.hive.json.marshaller.DateUTCSerializer;
    import com.hive.json.marshaller.ImageDeserializer;
    import com.hive.json.marshaller.ImageSerializer;

    @Entity
    @Table(name = "eventnew")
    public class Event implements java.io.Serializable {

        private Integer id;
        private String name;
        private String description;
        private String address;
        private String latitude;
        private String longitude;

        @JsonSerialize(using = ImageSerializer.class)
        @JsonDeserialize(using = ImageDeserializer.class)
        private byte[] image;
        private String placeId;

        @JsonSerialize(using = DateUTCSerializer.class)
        @JsonDeserialize(using = DateUTCDeserializer.class)
        private Date startAt;

        @JsonSerialize(using = DateUTCSerializer.class)
        @JsonDeserialize(using = DateUTCDeserializer.class)
        private Date endAt;

        private boolean active;
        private String hostPhoneNumber;

        private Set<User> participants = new HashSet<User>(0);
        private Set<EventUser> eventUsers = new HashSet<EventUser>(0);

        public Event() {
        }

        @Id
        @GeneratedValue(strategy = IDENTITY)
        @Column(name = "ID", unique = true, nullable = false)
        public Integer getId() {
            return this.id;
        }

        public void setId(Integer id) {
            this.id = id;
        }

        @Column(name = "NAME", nullable = false, length = 10)
        public String getName() {
            return this.name;
        }

        public void setName(String name) {
            this.name = name;
        }

        @Column(name = "DESCRIPTION")
        public String getDescription() {
            return description;
        }

        public void setDescription(String description) {
            this.description = description;
        }

        @Column(name = "ADDRESS")
        public String getAddress() {
            return address;
        }

        public void setAddress(String address) {
            this.address = address;
        }

        @Column(name = "LATITUDE")
        public String getLatitude() {
            return latitude;
        }

        public void setLatitude(String latitude) {
            this.latitude = latitude;
        }

        @Column(name = "LONGITUDE")
        public String getLongitude() {
            return longitude;
        }

        public void setLongitude(String longitude) {
            this.longitude = longitude;
        }

        @Column(name = "START_TS")
        public Date getStartAt() {
            return startAt;
        }

        public void setStartAt(Date startAt) {
            this.startAt = startAt;
        }

        @Column(name = "END_TS")
        public Date getEndAt() {
            return endAt;
        }

        public void setEndAt(Date endAt) {
            this.endAt = endAt;
        }

        @Column(name = "IMAGE")
        public byte[] getImage() {
            return image;
        }

        public void setImage(byte[] image) {
            this.image = image;
        }

        @Column(name = "PLACE_ID")
        public String getPlaceId() {
            return placeId;
        }

        public void setPlaceId(String placeId) {
            this.placeId = placeId;
        }

        @Column(name = "ACTIVE")
        public boolean isActive() {
            return active;
        }

        public void setActive(boolean active) {
            this.active = active;
        }

        @Column(name = "HOST_PHONE_NUMBER")
        public String getHostPhoneNumber() {
            return hostPhoneNumber;
        }

        public void setHostPhoneNumber(String hostPhoneNumber) {
            this.hostPhoneNumber = hostPhoneNumber;
        }

        @Transient
        public Set<User> getParticipants() {
            return participants;
        }

        public void setParticipants(Set<User> participants) {
            this.participants = participants;
        }

        @OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.event")
        public Set<EventUser> getEventUsers() {
            return this.eventUsers;
        }

        public void setEventUsers(Set<EventUser> eventUsers) {
            this.eventUsers = eventUsers;
        }

    }

    package com.hive.domain;

    import static javax.persistence.GenerationType.IDENTITY;

    import java.util.HashSet;
    import java.util.Set;

    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
    import javax.persistence.UniqueConstraint;

    @Entity
    @Table(name = "usernew")
    public class User implements java.io.Serializable {

        private String guid;
        private String firstName;
        private String middleName;
        private String lastName;
        private Integer phoneNumber;
        private String email;
        private String pin;
        private boolean active;

        private Set<EventUser> eventUsers = new HashSet<EventUser>(0);

        public User() {
        }

        @Column(name = "CGUID")
        public String getGuid() {
            return guid;
        }

        public void setGuid(String guid) {
            this.guid = guid;
        }

        @Id
        @GeneratedValue(strategy = IDENTITY)
        @Column(name = "PHONE_NUMBER", unique = true, nullable = false)
        public Integer getPhoneNumber() {
            return phoneNumber;
        }

        public void setPhoneNumber(Integer phoneNumber) {
            this.phoneNumber = phoneNumber;
        }

        @Column(name = "FIRST_NAME")
        public String getFirstName() {
            return firstName;
        }

        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }

        @Column(name = "LAST_NAME")
        public String getLastName() {
            return lastName;
        }

        public void setLastName(String lastName) {
            this.lastName = lastName;
        }

        @Column(name = "MIDDLE_NAME")
        public String getMiddleName() {
            return middleName;
        }

        public void setMiddleName(String middleName) {
            this.middleName = middleName;
        }

        @Column(name = "EMAIL")
        public String getEmail() {
            return email;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        @Column(name = "PIN")
        public String getPin() {
            return pin;
        }

        public void setPin(String pin) {
            this.pin = pin;
        }

        @Column(name = "ACTIVE")
        public boolean isActive() {
            return active;
        }

        public void setActive(boolean active) {
            this.active = active;
        }

        @OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.user", cascade = CascadeType.ALL)
        public Set<EventUser> getEventUsers() {
            return this.eventUsers;
        }

        public void setEventUsers(Set<EventUser> eventUsers) {
            this.eventUsers = eventUsers;
        }

    }


    package com.hive.domain;

    import javax.persistence.AssociationOverride;
    import javax.persistence.AssociationOverrides;
    import javax.persistence.Column;
    import javax.persistence.EmbeddedId;
    import javax.persistence.Entity;
    import javax.persistence.JoinColumn;
    import javax.persistence.Table;
    import javax.persistence.Transient;

    @Entity
    @Table(name = "eventusernew", catalog = "hive")
    @AssociationOverrides({ @AssociationOverride(name = "pk.user", joinColumns = @JoinColumn(name = "USER_ID") ),
            @AssociationOverride(name = "pk.event", joinColumns = @JoinColumn(name = "EVENT_ID") ) })
    public class EventUser implements java.io.Serializable {

        private EventUserId pk = new EventUserId();
    //  private String state;
    //  private String comment;
    //  private String displayName;

        public EventUser() {
        }

    //  @Column(name = "STATE")
    //  public String getState() {
    //      return state;
    //  }
    //
    //  @Column(name = "DISPLAY_NAME")
    //  public String getDisplayName() {
    //      return displayName;
    //  }
    //
    //  public void setDisplayName(String displayName) {
    //      this.displayName = displayName;
    //  }
    //
    //  public void setState(String state) {
    //      this.state = state;
    //  }
    //
    //  @Column(name = "COMMENT")
    //  public String getComment() {
    //      return comment;
    //  }
    //
    //  public void setComment(String comment) {
    //      this.comment = comment;
    //  }

        @EmbeddedId
        public EventUserId getPk() {
            return pk;
        }

        public void setPk(EventUserId pk) {
            this.pk = pk;
        }

        @Transient
        public User getUser() {
            return getPk().getUser();
        }

        public void setUser(User stock) {
            getPk().setUser(stock);
        }

        @Transient
        public Event getEvent() {
            return getPk().getEvent();
        }

        public void setEvent(Event category) {
            getPk().setEvent(category);
        }

        public boolean equals(Object o) {
            if (this == o)
                return true;
            if (o == null || getClass() != o.getClass())
                return false;

            EventUser that = (EventUser) o;

            if (getPk() != null ? !getPk().equals(that.getPk()) : that.getPk() != null)
                return false;

            return true;
        }

        public int hashCode() {
            return (getPk() != null ? getPk().hashCode() : 0);
        }
    }


    package com.hive.domain;

    import javax.persistence.Embeddable;
    import javax.persistence.ManyToOne;

    @Embeddable
    public class EventUserId implements java.io.Serializable {

        private User user;
        private Event event;

        @ManyToOne
        public User getUser() {
            return user;
        }

        public void setUser(User stock) {
            this.user = stock;
        }

        @ManyToOne
        public Event getEvent() {
            return event;
        }

        public void setEvent(Event category) {
            this.event = category;
        }

        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;

            EventUserId that = (EventUserId) o;

            if (user != null ? !user.equals(that.user) : that.user != null) return false;
            if (event != null ? !event.equals(that.event) : that.event != null)
                return false;

            return true;
        }

        public int hashCode() {
            int result;
            result = (user != null ? user.hashCode() : 0);
            result = 31 * result + (event != null ? event.hashCode() : 0);
            return result;
        }

    }

1 个答案:

答案 0 :(得分:1)

您需要级联保存。 在您的Event实体中,将一对多更改为以下内容:

@OneToMany(mappedBy="pk.event", cascade=CascadeType.ALL)