关于hibernate注解方式的实体类映射

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于hibernate注解方式的实体类映射相关的知识,希望对你有一定的参考价值。

我想知道 比如一个表的某个字段 是另一个表的外键 那我在实体类中 的注解应该怎么写 是@ManyToOne么? 那然后该写@JoinColumn ? 这个不是关联的列么 那我去哪里写关联的表 大概就是这意思 求不复制的回答 或者给我举个几个具体点的例子 不要网上那些看不... 我想知道 比如一个表的某个字段 是另一个表的外键 那我在实体类中 的注解应该怎么写 是@ManyToOne么? 那然后该写@JoinColumn ? 这个不是关联的列么 那我去哪里写关联的表 大概就是这意思 求不复制的回答 或者给我举个几个具体点的例子 不要网上那些看不懂的

参考技术A 多对一的单向映射:以Group和User为例
@Entity
class
User
private
Group
g;
@ManyToOne
@JoinColumn(name="g_id")
public
Group
getG()

hibernate用注解替代映射文件

1.首先把原来的映射文件删掉,给实体类添加注解:

@Entity        //声明当前类为hibernate映射到数据库中的实体类
@Table(name="news")        //声明table的名称
public class News {
    @Id        //声明此列为主键,作为映射对象的标识符
    /**
     *  @GeneratedValue注解来定义生成策略
     *  GenerationType.TABLES 当前主键的值单独保存到一个数据库的表中
     *  GenerationType.SEQUENCE  利用底层数据库提供的序列生成标识符
     *  GenerationType.IDENTITY 采取数据库的自增策略
     *  GenerationType.AUTO 根据不同数据库自动选择合适的id生成方案,这里使用mysql,为递增型
     */
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    
    @Column(name="title",nullable=false)
    private String title;
    
    @Column(name="content",nullable=false)
    private String content;
    
    @Column(name="begintime",nullable=false)
    private Date begintime;
    
    @Column(name="username",nullable=false)
    private String username;

    public News() {
        super();
    }
    
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    
    public Date getBegintime() {
        return begintime;
    }
    public void setBegintime(Date begintime) {
        this.begintime = begintime;
    }
    
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    
    
}

想知道hibernate注解怎么使用的,可以参考我上一篇的博客

http://www.cnblogs.com/qq1272850043/p/5960365.html

 

2.添加完注解之后,到applicationContext.xml文件中把查找对应映射文件的property删了

<!-- 把这个删了 -->
<property name="mappingResources">
    <list>
        <value>news/entity/News.hbm.xml</value>
    </list>
</property>

 

3.然后在applicationContext.xml中加上这个

<!-- 扫描实体类包,解析实体类的注解 -->
<property name="packagesToScan">
    <list>
        <!-- 这里value值添实体类所在的包 -->
        <value>news.entity</value>
    </list>
</property>

以上是关于关于hibernate注解方式的实体类映射的主要内容,如果未能解决你的问题,请参考以下文章

《Java从入门到放弃》入门篇:使用注解的方式配置hibernate映射关系

《Java从入门到放弃》入门篇:使用注解的方式配置hibernate映射关系

hibernate用注解配置实体类的映射

hibernate通过注解实现实体和表的映射

5 -- Hibernate的基本用法 --6 深入Hibernate映射

hibernate中使用annotation映射的时候,如何指定实体类中的某些字段不映射到数据库?