hibernate

### 关联

@OneToMany mappedBy
@ManyToOne 默认fetch:EAGER @JoinColumn
hibernate 自动建表的关联一般是外键,但实际表结构不一定是外键
### 删除
建议先load后删除,方便使用CascadeType.REMOVE
### load get
load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常
get方法检索不到的话会返回null
### a different object with the same identifier value was already associated with the session
session.clean()
session.refresh(object)
session.merge(object)
### megre
megre 可能也更新关联的对象
### Arraytest

  • 当关联的不是entity对象时可以用@ElementCollection
  • @ElementCollection关联的是enmu时,默认是tinyint,可以使用@Enumerated(EnumType.STRING)在表中用字符
  • 当你的Enum中有自定义字段,并且你希望用该字段作为hibernate持久化的值的时候,就需要用到hibernate的自定义映射类型UserType
  • 有序的对象可以使用@OrderColumn,@IndexColumn
  • @CollectionId可以给*@ElementCollection*添加ID
    ### @IdClass
  • pk可以是关联对象的字段,可应通过@IdClass引用
  • @ID 可以加在@ManyToOne等上面
  • @MapsId 在@EmbeddedId中启到相同的作用 也可以使用@JoinColumns
  • SimpleParentEmbedded可以不用@IdClass
    ### CascadeTest
  • DETACH对应缓存的数据的删除等。
    ### 时间
  • @Temporal指定是Date,Time,Timestamp
    ### @Basic
  • 默认的为@Basic
    ### @Parent
  • IdClass可以用@Parent引用owner
    ### @XXXToOne
  • 默认@JoinColumn id attribute mapped by join column default
    ### 继承
  • 查询@org.hibernate.annotations.Entity(polymorphisms = PolymorphismType.EXPLICIT)
  • 或者Restrictions.eq("class", A.class)
    ### left join
  • createAlias("menus", "menus", Criteria.LEFT_JOIN)
    ### 其他
  • man
  • JPA注解