zoukankan      html  css  js  c++  java
  • 【MyEcplise hibernate tools】hibernate tools的使用以及错误

    1.点击Myecplise右上角

    2.点击进入后,在这个区域右键 New 一个新的connection

    3.以mySql连接为例子,在这里展示一下,下面这几项必须都要按照要求完全一致,除了架包所在的本地位置之外

    4.配置完成可以点击上图的Test Driver,测试是否连接成功。连接成功的界面如下:

    5.选择本数据库下的所有数据表或者你自己想要生成实体的数据表,点击反向生成

    6.此刻,如果在选择的项目中没有我们想要操作的项目,说明我们的项目此时还不支持hibernate,还不是hibernate项目,那我们需要先回到正常的myEcplise界面下,将我们的项目转成hibernate项目

    我们需要指定Hibernate的映射文件还有sessionFactory的包名,因为他们不能被创建在默认的包中,下面的提示很清楚

    处理完成之后,我们的项目就支持hibernate了。这个时候我们就可以再进入到

    这个界面下面接着进行我们的操作了。

    7.我们 连接上我们的数据库,然后,选择所有的数据表,反向生成点击:

    然后进入这个界面,我们选择如下:【我们采用注解的形式,就不选择映射文件的方式了】

    普通的ID生成就是下面这样,不用修改什么。

    如果想要规定主键的生成策略,例如主键生成策略为uuid,则本页面可以如下【如果之前实体已经生成,不用怕,这个可以覆盖生成】:

    8.然后回到正常的界面,查看项目结构,发现项目已经正常生成实体了

    查看实体中的内容发现:不仅实体,实体与实体之间的关系也都正常的生成【我们是5个数据表,但是这个例子中有两个多对多生成的中间表,hibernate反向工程会自动的将这两个中间表变作ManyToMany的关系存在于实体中!!】

     1 package com.it.entity;
     2 
     3 import java.util.HashSet;
     4 import java.util.Set;
     5 import javax.persistence.CascadeType;
     6 import javax.persistence.Column;
     7 import javax.persistence.Entity;
     8 import javax.persistence.FetchType;
     9 import javax.persistence.Id;
    10 import javax.persistence.ManyToMany;
    11 import javax.persistence.Table;
    12 
    13 /**
    14  * Authority entity. @author MyEclipse Persistence Tools
    15  */
    16 @Entity
    17 @Table(name = "authority", catalog = "testdb")
    18 public class Authority implements java.io.Serializable {
    19 
    20     // Fields
    21 
    22     private String authorityId;
    23     private String authorityName;
    24     private Set<Role> roles = new HashSet<Role>(0);
    25 
    26     // Constructors
    27 
    28     /** default constructor */
    29     public Authority() {
    30     }
    31 
    32     /** minimal constructor */
    33     public Authority(String authorityId) {
    34         this.authorityId = authorityId;
    35     }
    36 
    37     /** full constructor */
    38     public Authority(String authorityId, String authorityName, Set<Role> roles) {
    39         this.authorityId = authorityId;
    40         this.authorityName = authorityName;
    41         this.roles = roles;
    42     }
    43 
    44     // Property accessors
    45     @Id
    46     @Column(name = "authorityId", unique = true, nullable = false, length = 36)
    47     public String getAuthorityId() {
    48         return this.authorityId;
    49     }
    50 
    51     public void setAuthorityId(String authorityId) {
    52         this.authorityId = authorityId;
    53     }
    54 
    55     @Column(name = "authorityName", length = 50)
    56     public String getAuthorityName() {
    57         return this.authorityName;
    58     }
    59 
    60     public void setAuthorityName(String authorityName) {
    61         this.authorityName = authorityName;
    62     }
    63 
    64     @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "authorities")
    65     public Set<Role> getRoles() {
    66         return this.roles;
    67     }
    68 
    69     public void setRoles(Set<Role> roles) {
    70         this.roles = roles;
    71     }
    72 
    73 }
    View Code

    错误1

     The last packet successfully received from the server was 0 milliseconds ago.
    解决方法:
    检查你的每一项的单词拼写是否有误,然后在URL上添加:?autoReconnect=true

    例如下:
     错误2:
    数据表之间有多对多的关系,然后应该是生成一张中间表就好,但是多生成一张ID表
    如下图:

    user表和testorder表生成一张中间表score

    但是使用hibernate  反向生成tools后生成的实体如下:

    多生成了一个ScoreId表

    解决方法:

    将本张表中的两个主键设置为一个主键 即可解决这个问题:

    这样就解决了 会多生成一个ID类的问题



  • 相关阅读:
    POJ3666 Making the Grade[动态规划]
    vector内部的实现1
    win32概述
    stl概述
    C++概要简介
    类的常量成员
    模板
    c11标准
    异常处理
    pak文件的打包和解包
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/5593591.html
Copyright © 2011-2022 走看看