spring data jpa manytomany example:
-----------------------------------
NOTE: 1) maven dependeccy pom.xml , we can get from previous example.
2) presestance.xml , beans.xml file also we can get from my previous example program.
2) presestance.xml , beans.xml file also we can get from my previous example program.
Course .java
----------------
package repository;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
@Entity
@Table(name="course")
public class Course {
@Id
@GeneratedValue
private int c_id;
private String c_name;
@ManyToMany( cascade = CascadeType.ALL)
@JoinTable(
name = "selectedstudent", joinColumns ={
@JoinColumn(name = "c_id", nullable = false, updatable = false)},
inverseJoinColumns = { @JoinColumn(name = "s_id")
}
)
private Set<Student> students=new HashSet<Student>(0);
public int getC_id() {
return c_id;
}
public void setC_id(int c_id) {
this.c_id = c_id;
}
public String getC_name() {
return c_name;
}
public void setC_name(String c_name) {
this.c_name = c_name;
}
public Set<Student> getStudents() {
return students;
}
public void setStudents(Set<Student> students) {
this.students = students;
}
}
CourceRepository .java
---------------
package repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface CourceRepository extends JpaRepository<Course, Long>,
JpaSpecificationExecutor<Course>{
}
Student .java
--------------
package repository;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
@Entity
@Table(name="student")
public class Student {
@Id
@GeneratedValue
private int s_id;
private String s_name;
@ManyToMany( cascade = CascadeType.ALL)
@JoinTable(
name = "selectedstudent", joinColumns ={
@JoinColumn(name = "s_id", nullable = false, updatable = false)},
inverseJoinColumns = { @JoinColumn(name = "c_id")
}
)
private Set<Course> courses=new HashSet<Course>(0);
public int getS_id() {
return s_id;
}
public void setS_id(int s_id) {
this.s_id = s_id;
}
public String getS_name() {
return s_name;
}
public void setS_name(String s_name) {
this.s_name = s_name;
}
public Set<Course> getCourses() {
return courses;
}
public void setCourses(Set<Course> courses) {
this.courses = courses;
}
}
StudentRepository .java
--------------------------
package repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface StudentRepository extends JpaRepository<Student, Long>,
JpaSpecificationExecutor<Student>{
}
TestCase .java
---------------
package madhav;
import repository.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class TestCase {
@Autowired
private CourceRepository courceRepository;
@Autowired
private StudentRepository studentRepository;
@Transactional
public void createEmployee() {
try
{
Student s1=new Student();
s1.setS_name("madhva");
Student s2=new Student();
s2.setS_name("venkat");
Course c1=new Course();
c1.setC_name("hibernate");
Course c2=new Course();
c2.setC_name("spring");
s1.getCourses().add(c1);
s1.getCourses().add(c2);
s2.getCourses().add(c1);
s1.getCourses().add(c2);
studentRepository.save(s1);
studentRepository.save(s2);
}
catch(Exception ex)
{
}
}
public CourceRepository getCourceRepository() {
return courceRepository;
}
public void setCourceRepository(CourceRepository courceRepository) {
this.courceRepository = courceRepository;
}
public StudentRepository getStudentRepository() {
return studentRepository;
}
public void setStudentRepository(StudentRepository studentRepository) {
this.studentRepository = studentRepository;
}
}
Test.java
---------------
package madhav;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
Object tc=(Object)ctx.getBean("testCase");
TestCase g=(TestCase)tc;
g.createEmployee();
}
}
output from console:
----------------------
create table course (
c_id integer not null auto_increment,
c_name varchar(255),
primary key (c_id)
)
10:28:46.473 [main] ERROR o.h.tool.hbm2ddl.SchemaExport - HHH000389: Unsuccessful: create table course (c_id integer not null auto_increment, c_name varchar(255), primary key (c_id))
10:28:46.473 [main] ERROR o.h.tool.hbm2ddl.SchemaExport - Table 'course' already exists
10:28:46.473 [main] DEBUG org.hibernate.SQL -
create table selectedstudent (
c_id integer not null,
s_id integer not null,
primary key (s_id, c_id)
)
10:28:46.661 [main] DEBUG org.hibernate.SQL -
create table student (
s_id integer not null auto_increment,
s_name varchar(255),
primary key (s_id)
)
10:28:46.724 [main] ERROR o.h.tool.hbm2ddl.SchemaExport - HHH000389: Unsuccessful: create table student (s_id integer not null auto_increment, s_name varchar(255), primary key (s_id))
10:28:46.724 [main] ERROR o.h.tool.hbm2ddl.SchemaExport - Table 'student' already exists
10:28:46.724 [main] DEBUG org.hibernate.SQL -
alter table selectedstudent
add index FKB1A7B40F3A8A1D6 (c_id),
add constraint FKB1A7B40F3A8A1D6
foreign key (c_id)
references course (c_id)
10:28:47.537 [main] DEBUG org.hibernate.SQL -
alter table selectedstudent
add index FKB1A7B40D2E6D3DE (s_id),
add constraint FKB1A7B40D2E6D3DE
foreign key (s_id)
references student (s_id)
output from sql prompt:
------------------------
Related topics:
6. spring data jpa onetoone
Related topics:
6. spring data jpa onetoone
6. spring data jpa onetoone
TUTIORALS FROM MADHAV:
No comments:
Post a Comment