使用jpa注解实现映射组件类型的集合

主类集合的注解:

  @ElementCollection(fetch = FetchType.LAZY)
    @CollectionTable(name = "info", joinColumns = @JoinColumn(name = "user_id"))
    @AttributeOverride(name = "listOrder", column = @Column(name = "list_order"))
    @OrderBy(clause = "list_order desc")

元素类就是普通的pojo

主类:

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

    private static final long serialVersionUID = -7241872866011395419L;
    private String id;
    private String userName;
    private Integer age;
    private List<Event> events = new ArrayList<Event>();
    private List<Info> infos = new ArrayList<Info>();

    public SysUser() {

    }

    @GenericGenerator(name = "generator", strategy = "uuid")
    @Id
    @GeneratedValue(generator = "generator")
    @Column(name = "ID", unique = true, nullable = false, length = 32)
    public String getId() {
        return id;
    }

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

    @Column(name = "age", nullable = true)
    public Integer getAge() {
        return age;
    }

    @Column(name = "user_name", nullable = true, length = 250)
    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    public List<Event> getEvents() {
        return events;
    }

    public void setEvents(List<Event> events) {
        this.events = events;
    }

    @ElementCollection(fetch = FetchType.LAZY)
    @CollectionTable(name = "info", joinColumns = @JoinColumn(name = "user_id"))
    @AttributeOverride(name = "listOrder", column = @Column(name = "list_order"))
    @OrderBy(clause = "list_order desc")
    public List<Info> getInfos() {
        return infos;
    }

    public void setInfos(List<Info> infos) {
        this.infos = infos;
    }

}

元素类:

public class Info implements Serializable {

    private String first;
    private String last;
    private Integer listOrder;

    public Info() {

    }

    public String getFirst() {
        return first;
    }

    public void setFirst(String first) {
        this.first = first;
    }

    public String getLast() {
        return last;
    }

    public void setLast(String last) {
        this.last = last;
    }

    public Integer getListOrder() {
        return listOrder;
    }

    public void setListOrder(Integer listOrder) {
        this.listOrder = listOrder;
    }

}

猜你喜欢

转载自smhx.iteye.com/blog/2215681
今日推荐