Здесь есть человек класс, который имеет отношение один ко многим с холстом:
@Entity
@Table(name="person")
public class Person implements UserDetails{
@Id
@Column(name="id")
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "person_seq_gen")
@SequenceGenerator(name = "person_seq_gen",sequenceName = "person_seq")
private int id;
@OneToMany(mappedBy = "person1",fetch = FetchType.EAGER,cascade = CascadeType.REMOVE)
private Set<Canvas> canvas1 = new HashSet<Canvas>();
public Set<Canvas> getCanvas1() {
return canvas1;
}
public void setCanvas1(Set<Canvas> canvas1) {
this.canvas1 = canvas1;
}
}
Холст Модель:
@Entity
@Table(name = "canvas")
public class Canvas {
@Id
@Column(name="canvasid")
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "canvas_gen")
@SequenceGenerator(name = "canvas_gen",sequenceName = "canvas_seq")
private int canvasid;
@ManyToOne
@JoinColumn(name = "id",nullable = false)
@JsonIgnore
private Person person1;
public Person getPerson1() {
return person1;
}
public void setPerson1(Person person1) {
this.person1 = person1;
}
public int getPerson1id(){
return this.person1.getId();
}
}
Вот DAOImpl, когда вам хочу добавить холст:
public void addCanvas(Canvas canvas, Person person) {
int id = person.getId();
if(session == null) {
session = this.sessionFactory.openSession();
}else {
session = this.sessionFactory.getCurrentSession();
}
Person person1 = (Person) session.get(Person.class,id);
person.getCanvas1().add(canvas);
canvas.setPerson1(person1);
session.merge(canvas);
session.flush();
}
И у меня есть метод, аналогичный Ваш запрос:
public List<Canvas> listCanvasPerson(Person person) {
int id = person.getId();
if(session == null){
session = this.sessionFactory.openSession();
} else{
session = this.sessionFactory.getCurrentSession();
}
Query query = session.createQuery("from Canvas as c where c.person1.id=:id order by c.canvasnumber");
query.setParameter("id",id);
List<Canvas> canvasList = query.list();
Надеется, что это помогает, если я сделал ошибку где-то, дайте мне знать. Пожалуйста, поймите, я использую простой ключ, а не сложный ключ.
Вы используете сложный ключ или простой ключ, я отправляю код для создания отношений. Я использую свой код для демонстрации, а не ваш, проверьте ответ за 5 минут. –
Что вы ищете? Отображения? Какова связь между Клиентом и Клиентом, индивидуально, один-ко-многим? –
Нет никакого отношения. Я собираюсь это сделать. Но я должен использовать другой столбец как внешний ключ в таблице контактов. – masterdany88