hibernate 注解映射值类型集合

原文地址:http://shyf12054213.iteye.com/blog/1629891


假定Customer类有一个集合属性images,用来存放所有照片的文件名。

private Set<String> images=new TreeSet<String>();  



映射set集合

    @Entity  
    @Table(name="customers")  
    public class Customer implements Serializable {  
        private Long id;  
        private String name;  
        private int age;  
        private Set<String> images=new TreeSet<String>();  
        @Id  
        @GeneratedValue(strategy=GenerationType.AUTO)  
        public Long getId() {  
            return this.id;  
        }  
      
        public void setId(Long id) {  
            this.id = id;  
        }  
      
        @CollectionOfElements()  
        @JoinTable(name="IMAGES",joinColumns={@JoinColumn(name="CUSTOMER_ID")})  
        @Column(name="filename",nullable=false)  
        public Set<String> getImages() {  
            return images;  
        }  
      
        public void setImages(Set<String> images) {  
            this.images = images;  
        }  
    }  


映射bag包

bag集合中的对象可以重复,但不按特定方式排序。hibernate允许你用list来模拟bag行为。

       @CollectionOfElements  
       @CollectionId(columns = @Column(name="imageid",nullable=false), type=@Type(type="long"), generator = "sys-increment")   
       @GenericGenerator(name="sys-increment",strategy="increment")  
       @JoinTable(name="IMAGES",joinColumns={@JoinColumn(name="CUSTOMER_ID")})  
       @Column(name="FILENAME")  
    public List<String> getImages() {  
        return images;  
    }  
    public void setImages(List<String> images) {  
        this.images = images;  
    }  

映射LIST列表

集合中的对象可以重复,并且按索引位置排序

@CollectionOfElements  
@JoinTable(name="images",joinColumns={@JoinColumn(name="customerid")})  
@IndexColumn(name = "imageid")  
@Column(name="filename",nullable=false)  
public List<String> getImages() {  
    return this.images;  
}  
  
public void setImages(List<String> images) {  
    this.images = images;  
} 

映射map

    @CollectionOfElements  
    @org.hibernate.annotations.MapKey(columns={@Column(name="image_name",nullable=false)})  
    @JoinTable(name="images",joinColumns={@JoinColumn(name="customerid")})  
    @Column(name="filename",nullable=false)  
    @Sort(type=SortType.NATURAL)  
    public Map<String,String> getImages() {  
        return this.images;  
    }  
      
    public void setImages(Map<String,String> images) {  
        this.images = images;  
    }  

映射组件类型集合

映射方式和以上大致相同。以map举例。

@Embeddable  
public class Image implements Serializable {  
    //private String name;  
    private String filename;  
    private int sizeX;  
    private int sizeY;  
    private Customer customer;  
} 


@CollectionOfElements   
    @MapKey(columns={@Column(name = "name",nullable=false)})  
    @JoinTable(name="IMAGES",joinColumns={@JoinColumn(name="CUSTOMER_ID",nullable=false)})  

    public Map<String,Image> getImages() {  
        return this.images;  
    } 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值