0

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 Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<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>

In the database TraningDays table is created but traningTime table is not created.

Can any one help?

3
  • when you start the applciation , did you have an error? Commented Sep 28, 2016 at 12:07
  • You miss a mappedBy = "trainingDays" in the @OneToMany in TrainingDays . Commented Sep 28, 2016 at 12:26
  • this error comes after adding your code Commented Sep 28, 2016 at 12:41

3 Answers 3

0

Please correct your code as given:

class TrainingDays

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

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

}

class TrainingTime

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


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

}

You need to specify "mappedBy" when you are creating bidirectional relationship.

Sign up to request clarification or add additional context in comments.

1 Comment

I tried you code as well but still it is not creating TrainingTime table in DB.
0

As the mapping is bidirectional. Please try like this.

TrainingDays.java

import java.io.Serializable;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

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

    private static final long serialVersionUID = 1L;

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

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

    @OneToMany(mappedBy="trainingDays")
    private Set<TrainingTime> trainingTime;

    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;
    }

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

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

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

TrainingTime.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;
    }
}

Always try to apply mappings after declaring all the columns.

1 Comment

Thank. but as per your code its still not creating an table of TrainingTime.
0

I got the Solution of this issue,

in TrainingTime Pojo class i have created one variable named "Desc", and i found that this keyword is already reserved, so can name any variable like this.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.