Hibernate annotation 使用笔记

@Entity                         --声明为一个实体bean   
@Table(name="promotion_info") --为实体bean映射指定表(表名="promotion_info)
@Id --声明了该实体bean的标识属性
@GeneratedValue --可以定义标识字段的生成策略.
@Transient --将忽略这些字段和属性,不用持久化到数据库
@Column(name="promotion_remark")--声明列(字段名="promotion_total") 属性还包括(length=200等)
@Temporal(TemporalType.TIMESTAMP)--声明时间格式
@Enumerated --声明枚举
@Version --声明添加对乐观锁定的支持
@OneToOne --可以建立实体bean之间的一对一的关联
@OneToMany --可以建立实体bean之间的一对多的关联
@ManyToOne --可以建立实体bean之间的多对一的关联
@ManyToMany --可以建立实体bean之间的多对多的关联
@Formula --一个SQL表达式,这种属性是只读的,不在数据库生成属性(可以使用sum、average、max等)
以上是基本常用注解,下面是例子说明
@Entity  
@Table(name="promotion_info")
public class Promotion implements Serializable {

//AUTO--可以是identity类型的字段,或者sequence类型或者table类型,取决于不同的底层数据库
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@Column(name="group_start_amount")
private Integer groupStartAmount=0;

@Column(name="promotion_remark",length=200)
//@Lob 如果是文章内容可以使用 只需要把length=200去掉就可以了
private String remark;
//DATE - java.sql.Date
//TIME - java.sql.Time
//TIMESTAMP - java.sql.Timestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name="start_time")
private Date startTime;

//显示0 隐藏1
public static enum DisplayType {
显示,隐藏
}
@Enumerated(value = EnumType.ORDINAL)//ORDINAL序数
private DisplayType displayType = DisplayType.显示;

@Version
private Integer version;

//CascadeType.PERSIST -- 触发级联创建(create)
//CascadeType.MERGE -- 触发级联合并(update)
//FetchType.LAZY -- 延迟加载
@ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.MERGE},fetch = FetchType.LAZY)
private PromotionGroup promotionGroup;

//单向ManyToMany
//@JoinTable(关联的表名)
//joinColumns -- promotion关联的列的外键
//inverseJoinColumns -- largess 关联列的外键
@ManyToMany(cascade = {CascadeType.PERSIST,CascadeType.MERGE})
@JoinTable(name="promotion_largess",joinColumns={@JoinColumn(name="promotion_id")},inverseJoinColumns={@JoinColumn(name="largess_id")})
private Set<Largess> largess;

//get set 省略....

}
@Entity
@Table(name="promotion_group")
public class PromotionGroup implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

//mappedBy的值"promotionGroup"指向owner(Promotion)端的关联属性,并且是双向关系
@OneToMany(mappedBy="promotionGroup",cascade=CascadeType.ALL)
private List<Promotion> promotion;

//get set 省略....
}
@Entity
@Table(name="largess")
public class Largess implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

//1.sql语句中的字段和表名都应该和数据库相应,而不是类中的字段,
//若带有参数如la.id= id,这个=id才是类中属性
//2.操作字段一定要用别名
@Formula(select max(la.id) from largess as la)
private int maxId;

@Formula(select COUNT(la.id) from largess la)
private int count;

@Transient
private String img

//get set 省略....
}


恩 是的 如果双向的只要在Largess 中增加

@ManyToMany(mappedBy="largess" cascade = {CascadeType.PERSIST,CascadeType.MERGE})     
//@ManyToMany(mappedBy="largess" cascade=CascadeType.ALL)//如果全包就用ALL
@JoinTable(name="promotion_largess",joinColumns={@JoinColumn(name="largess_id")},inverseJoinColumns={@JoinColumn(name="promotion_id")})
private Set<Promotion> promotion;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前言 1. 翻译说明 2. 版权声明 前言 1. 创建一个注解项目 1.1. 系统需求 1.2. 系统配置 2. 实体Bean 2.1. 简介 2.2. 用EJB3注解进行映射 2.2.1. 声明实体bean 2.2.1.1. 定义表(Table) 2.2.1.2. 乐观锁定版本控制 2.2.2. 映射简单属性 2.2.2.1. 声明基本的属性映射 2.2.2.2. 声明列属性 2.2.2.3. 嵌入式对象(又名组件) 2.2.2.4. 无注解之属性的默认值 2.2.. 映射主键属性 2.2.4. 映射继承关系 2.2.4.1. 每个类一张表 2.2.4.2. 每个类层次结构一张表 2.2.4.3. 连接的子类 2.2.4.4. 从父类继承的属性 2.2.5. 映射实体Bean的关联关系 2.2.5.1. 一对一(One-to-one) 2.2.5.2. 多对一(Many-to-one) 2.2.5.3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. 关联关系获取 2.2.6. 映射复合主键与外键 2.2.7. 映射二级表(secondary tables) 2.3. 映射查询 2.3.1. 映射EJBQL/HQL查询 2.3.2. 映射本地化查询 2.4. Hibernate独有的注解扩展 2.4.1. 实体 2.4.2. 标识符 2.4.3. 属性 2.4.3.1. 访问类型 2.4.3.2. 公式 2.4.3.3. 类型 2.4.3.4. 索引 2.4.3.5. @Parent 2.4.3.6. 生成的属性 2.4.4. 继承 2.4.5. 关于单个关联关系的注解 2.4.5.1. 延迟选项和获取模式 2.4.6. 关于集合类型的注解 2.4.6.1. 参数注解 2.4.6.2. 更多的集合类型 2.4.7. 缓存 2.4.8. 过滤器 2.4.9. 查询 3. 通过XML覆写元数据 3.1. 原则 3.1.1. 全局级别的元数据 3.1.2. 实体级别的元数据 3.1.3. 属性级别的元数据 3.1.4. 关联级别的元数据 4. Hibernate验证器 4.1. 约束 4.1.1. 什么是约束? 4.1.2. 内建约束 4.1.3. 错误信息 4.1.4. 编写你自己的约束 4.1.5. 注解你的领域模型 4.2. 使用验证器框架 4.2.1. 数据库schema层次验证 4.2.2. Hibernate基于事件的验证 4.2.3. 程序级验证 4.2.4. 验证信息 5. Hibernate与Lucene集成 5.1. 使用Lucene为实体建立索引 5.1.1. 注解领域模型 5.1.2. 启用自动索引 A. 术语表

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值