另一个pojo类没有在hibernate中创建数据库中的表

时间:2016-09-28 12:05:53

标签: java hibernate

TrainingDays.java

package com.hibernate;

import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "TrainingDays")
public class TrainingDays {

    @Id
    @GeneratedValue
    private int TD_Id;

    private String T_Days;

    public int getTD_Id() {
        return TD_Id;
    }

    public void setTD_Id(int tD_Id) {
        TD_Id = tD_Id;
    }

    public String getT_Days() {
        return T_Days;
    }

    public void setT_Days(String t_Days) {
        T_Days = t_Days;
    }

    @OneToMany(cascade={CascadeType.ALL})
    @JoinColumn(name="TD_Id")
    private Set<TrainingTime> trainingTime;

    public Set<TrainingTime> getTrainingTime() {
        return trainingTime;
    }

    public void setTrainingTime(Set<TrainingTime> trainingTime) {
        this.trainingTime = trainingTime;
    }

}

TrainingTime.java

    package com.hibernate;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "TrainingTime")
public class TrainingTime {

    @Id
    @GeneratedValue
    private int TT_Id;

    @ManyToOne
    @JoinColumn(name = "TD_Id")
    private TrainingDays trainingDays;

    private String time;

    private String desc;

    public int getTT_Id() {
        return TT_Id;
    }

    public void setTT_Id(int tT_Id) {
        TT_Id = tT_Id;
    }

    public TrainingDays getTrainingDays() {
        return trainingDays;
    }

    public void setTrainingDays(TrainingDays trainingDays) {
        this.trainingDays = trainingDays;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

}

的hibernate.cfg.xml


          “ - // Hibernate / Hibernate配置DTD 3.0 // EN”
          “http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd” &GT;

<session-factory>
    <property name="hbm2ddl.auto">update</property>
    <property name="dialect">org.hibernate.dialect.OracleDialect</property>
    <property name="connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>
    <property name="connection.username">blueHeaven</property>
    <property name="connection.password">123456</property>
    <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.format_sql">true</property>


    <mapping class="com.hibernate.Rodie" />
    <mapping class="com.hibernate.TrainingTime" />
    <mapping class="com.hibernate.TrainingDays" />


</session-factory>

在数据库中创建了TraningDays表,但未创建traningTime表。

任何人都可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

请更正您的代码:

class TrainingDays

$this -> SMTPOptions = [ 'ssl' => [ 'verify_peer' => false ] ];

课程培训时间

@Entity
@Table(name = "TrainingDays")
public class TrainingDays {

    @OneToMany(cascade={CascadeType.ALL},mappedBy = "trainingDays")
    private Set<TrainingTime> trainingTime;

}
  

您需要指定&#34; mappedBy&#34;当你创建双向时   关系。

答案 1 :(得分:0)

由于映射是双向的。请尝试这样。

TrainingDays.java

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "TrainingTime")
public class TrainingTime implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="TT_Id")
    private int TT_Id;

    @Column(name="time")
    private String time;

    @Column(name="desc")
    private String desc;

    @ManyToOne
    @JoinColumn(name="TD_Id")
    private TrainingDays trainingDays;

    public int getTT_Id() {
        return TT_Id;
    }

    public void setTT_Id(int tT_Id) {
        TT_Id = tT_Id;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public TrainingDays getTrainingDays() {
        return trainingDays;
    }

    public void setTrainingDays(TrainingDays trainingDays) {
        this.trainingDays = trainingDays;
    }

    public static long getSerialversionuid() {
        return serialVersionUID;
    }
}

TrainingTime.java

    Dim TopLevelDirectories As String() = IO.Directory.GetDirectories("D:\", "*" & MyCombo.Text & "*", System.IO.SearchOption.AllDirectories)
    For Each tlDir As String In TopLevelDirectories
        Dim SubLevelDirectories As String() = IO.Directory.GetDirectories(tlDir, "*Versions*", System.IO.SearchOption.AllDirectories)
        For Each slDir As String In SubLevelDirectories
            Dim dInfo As DirectoryInfo = New DirectoryInfo(slDir)
            Dim fInfo() As FileInfo = dInfo.GetFiles
            For Each f As FileInfo In fInfo
                ListView1.Items.Add(f.FullName) 'or ListView1.Items.Add(f.Name)
            Next
        Next
    Next

在声明所有列之后,始终尝试应用映射。

答案 2 :(得分:0)

我得到了这个问题的解决方案,

在TrainingTime中的

Pojo类我创建了一个名为“Desc”的变量,我发现这个关键字已经被保留了,所以可以命名任何这样的变量。