`
leon1509
  • 浏览: 533338 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate annotation笔记

阅读更多
school和userMember是一对多关系,一些基本配置就不写了:

SchoolInfo.java
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.Temporal;   
import javax.persistence.TemporalType;   
   
import org.hibernate.annotations.Formula;   
import org.hibernate.annotations.GenericGenerator;   
   
@Entity   
@Table(name = "school_info")   
public class SchoolInfo implements java.io.Serializable {   
   
    @Id   
    @GeneratedValue(generator = "system-uuid")   
    @GenericGenerator(name = "system-uuid", strategy = "uuid")   
    private String id;//hibernate的uuid机制,生成32为字符串   
   
    @Column(name = "actcodeId", updatable = false, nullable = true, length = 36)   
    private String actcodeId;   
   
    @Formula("select COUNT(*) from school_info")   
    private int count;   
   
    @Temporal(TemporalType.TIMESTAMP)//不用set,hibernate会自动把当前时间写入   
    @Column(updatable = false, length = 20)   
    private Date createTime;   
   
    @Temporal(TemporalType.TIMESTAMP)   
    private Date updateTime;// 刚开始我默认insertable=false,但会读取出错提示如下:   
    // Value '0000-00-00' can not be represented as java.sql.Timestamp   
   
    // mappedBy="school"就相当于inverse=true,(mappedBy指定的是不需要维护关系的一端)   
    // 应该注意的是mappedBy值对应@ManyToOne标注的属性,我刚开始写成"schoolId",让我郁闷了好一会 

    @OneToMany(mappedBy = "school", cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = UserMember.class)   
    // 用范性的话,就不用targetEntity了   
    private List users = new ArrayList();   
       
}


@GeneratedValue(strategy=GenerationType.AUTO)我们常用的自增长机制,我这里采用的是hibernate的uuid生成机制.
需要注意的是import javax.xx.Entity ,而不是org.hibernate.xx.Entity。
郁闷的是我上面用到@Formula,生成的sql竟然是'select COUNT(*) from school_info as formula0_ from school_info schoolinfo0_,当然不能执行了,寻求正解中~!!!!!!!!!

UserMember.java(前面引入的包已经贴过了,下面就不贴了)

@Entity  
@Table(name = "teacher_info")//实体类和数据库表名不一致时,才用这个  
public class UserMember implements java.io.Serializable {   
   
    @Id   
    @GeneratedValue(generator = "system-uuid")   
    @GenericGenerator(name = "system-uuid", strategy = "uuid")   
    private String id;   
   
    @Column(updatable = false, nullable = false, length = 20)   
    private String logonName;   
       
    @Temporal(TemporalType.TIMESTAMP)   
    @Column(updatable = false, length = 20)   
    private Date createTime;   
   
    @Temporal(TemporalType.TIMESTAMP)   
    private Date updateTime;   
   
    @ManyToOne(cascade = { CascadeType.MERGE })   
    @JoinColumn(name = "schoolId")   
    private SchoolInfo school;   
    //注意该类就不用声明schoolId属性了,如果不用@JoinColumn指明关联的字段,hibernate默认会是school_id.
}
分享到:
评论

相关推荐

    Hibernate Annotation 笔记 总结 注解

    【标签】:Hibernate, Annotation, 笔记, 总结, 注解 【正文】: Hibernate Annotation是Hibernate框架的一个重要特性,它允许开发者直接在Java类上使用注解来定义对象的数据库映射,从而避免了传统的XML配置文件...

    Hibernate Annotation笔记

    ### Hibernate Annotation概述与实践 #### 一、Hibernate Annotation简介 Hibernate作为Java领域内最流行的ORM框架之一,在过去的几年中经历了显著的发展,已经成为Java数据库持久化的事实标准。它不仅功能强大,...

    Hibernate Annotation 学习笔记

    《Hibernate Annotation 学习笔记》 在Java的持久化框架中,Hibernate以其强大的功能和易用性成为开发者首选之一。而Hibernate Annotation则是Hibernate提供的一种基于注解的实体映射方式,它极大地简化了传统XML...

    Hibernate -annotation 学习笔记

    【Hibernate - Annotation 学习笔记】 Hibernate 是一个流行的开源Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发人员可以使用面向对象的方式处理数据存储。Annotation是Hibernate提供的一种元...

    hibernate-annotation学习,笔记,

    ### Hibernate Annotation 学习与应用 #### 一、概述 Hibernate 是一款开源的对象关系映射 (ORM) 工具,它极大地简化了 Java 应用程序与数据库之间的交互过程。Hibernate 支持多种持久化机制,包括 XML 配置文件和...

    马士兵hibernate学习笔记(原版)

    8. **Annotation与XML配置**:Hibernate支持使用注解进行对象的映射,相比XML配置,注解更加简洁,减少了配置文件的维护工作,但XML配置在某些场景下可能更为灵活。 9. **环境准备**:安装Hibernate及相关依赖库,...

    hibernate学习笔记.

    【hibernate学习笔记】 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它极大地简化了数据库操作。以下是对Hibernate的学习要点的详细解释: 1. **建立第一个Hibernate版本的HelloWorld** - **...

    Hibernate学习笔记(培训学习时的笔记)

    【Hibernate学习笔记】 Hibernate是一个强大的Java对象关系映射(ORM)框架,它简化了数据库与Java应用程序之间的交互。本笔记将深入探讨Hibernate的核心概念、配置、实体管理、查询语言以及事务处理等方面,帮助...

    Hibernate学习笔记第二部分

    10. **注解(Annotation)**: Hibernate允许使用注解代替XML配置文件来描述实体和映射关系,使得代码更加简洁和易于理解。 在实际项目中,`.classpath`和`.project`文件是Eclipse IDE的工作空间配置文件,`src`目录...

    Spring和Hibernate学习笔记

    Hibernate: 第一课:第一个hibernate项目 第二课:测试实体对象的生命周期 第三课:hibernate基本映射 ...第四课:spring对AOP的只是(采用Annotation的方式) 第五课:spring对AOP的只是(采用配置文件的方式)

    spring整合Hibernate学习笔记.docx

    在本学习笔记中,我们将深入探讨如何实现这一整合,以及 Spring 中用于简化 Hibernate 操作的 HibernateTemplate 类。 首先,Spring 作为一款全面的后端框架,它提供了 IoC(Inversion of Control,控制反转)和 ...

    尚学堂hibernate笔记

    ### 尚学堂Hibernate笔记知识点详解 #### 一、项目初始化与环境搭建 1. **新建项目**:在IDE中创建一个新的Java项目。 2. **构建用户库并添加所需的JAR包**: - 右键点击项目 -> `Build Path` -> `Configure ...

    Hibernate笔记 马士兵

    第2课 Hibernate UML图 6 第3课 风格 7 第4课 资源 7 第5课 环境准备 7 第6课 第一个示例Hibernate HelloWorld 7 第7课 建立Annotation版本的HellWorld 9 第8课 什么是O/R Mapping 11 一、 定义: 11 二、 Hibernate...

    Hibernate学习笔记

    Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了轻量级的对象封装...总的来说,Hibernate学习笔记涵盖了从基础到高级的多个方面,对于希望掌握Hibernate的开发者来说,是一份相当全面的学习资料。

Global site tag (gtag.js) - Google Analytics