I'm trying to do a little exercise about hibernate and relations with xml and every works fine but now I wonder how to implement extra columns on my join table but I can't find a way.
This is my code:
Grades hbm xml
<hibernate-mapping>
    <class name="Grade" table="Grades" catalog ="test">
        <id name="id">
            <column name = "id"/>
            <generator class="increment"/>
        </id>
        <property name ="name"></property>
        <property name ="code"></property>  
    </class>
</hibernate-mapping>
Students hbm xml
<hibernate-mapping>
    <class name="Student" table="Students" catalog ="test">
        <id name="id">
            <column name = "student_id"/>
            <generator class="increment"/>
        </id>
        <property name ="name"></property>
        <property name="years" type ="integer"></property>
        <set name="grade" table="student_grades" cascade="all">
            <key column="student_id" not-null="true" />
            <many-to-many column="grade_id" class="Grade"/>           
        </set>  
    </class>
</hibernate-mapping>
Grade.java
public class Grade implements Serializable{
    
    private Long id;
    private String name;
    private String code;
    public Grade () {
        
    }
    
    public Grade (String name, String code) {
        this.name= name;
        this.code= code;
    }
    getters and setters
Student.java
public class Student implements Serializable{
    
    private Long id;
    private String name;
    private int years;
    private Set<Grade> grade;
    
    public Student() {
        
    }
    
    public Student(String name, int years, Set<Grade> grade) {
        super();
        this.name= name;
        this.years= years;
        this.grade= grade;
    }
Main
public class Main {
    public static void main(String[] args) {
        Configuration cfg =new Configuration().configure();
        SessionFactory sessionFactory = cfg.buildSessionFactory(new StandardServiceRegistryBuilder().configure().build());
        Session session = null;
        Transaction tx = null;
        
        try {
            session = sessionFactory.openSession();
            tx = session.beginTransaction();        
            
            Grade m1 = new Grade("Test A", "01");
            session.save(m1);
            HashSet<Grade> set1 = new HashSet<Grade>();
            set1.add(m1);
            Student a = new Student("Richard", 26, set1);
            session.save(a);
 
            ...
With this I have a table named "student_grades" which has the student_id and the grade_id and in which grades are every student, but I also wanna to have on that table the grade name and student name. Is the any way?
Thank you
 
    