Добрый день !
Есть
Spring JPA EntityManager OneToMany CRUD
возник вопрос , как правильно реализовать CRUD операции по работе с коллекцией? вставка удаление итд ?
что то информации много , а вот конкретной эталонной реализации так найти и не смог ... :(
Прощу помощи !
так же вопрос по реализации
public int hashCode() {}
и
public boolean equals(Object obj) {}
с учетом того что объект уже создан (тогда сравнение только по id ??? )? а если его нет в базе???
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
package ru.test.model.test;
import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
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.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
@Entity
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(unique=true, nullable=false)
private String login;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Collection<Role> roles = new HashSet<Role>();
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public Collection<Role> getRoles() {
return Collections.unmodifiableCollection(roles);
}
public void setRoles(Set<Role> roles) {
this.roles = roles;
}
public void adRole(Role role) {
role.setUser(this);
roles.add(role);
}
public boolean removeRole(Role role) {
role.setUser(null);
return roles.remove(role);
}
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
package ru.test.model.test;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
@Entity
public class Role implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ManyToOne
@JoinColumn(referencedColumnName = "id")
private User user;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
package ru.test.model.test;
public interface UserService {
//crud
public void create(User entity);
public void edit(User entity);
public void remove(User entity);
public User find(Object id);
//
public void addRoleToUser(User person, Role userProperty);
public void editRoleToUser(User person, Role userProperty);
public void removeRoleToUser(User person, Role userProperty);
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
package ru.test.model.test;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service("userService")
@Repository
@Transactional
public class UserServiceImpl implements UserService {
@PersistenceContext
private EntityManager em;
@Override
public void create(User entity) {
em.persist(entity);
}
@Override
public void edit(User entity) {
em.merge(entity);
}
@Override
public void remove(User entity) {
em.remove(em.merge(entity));
}
@Override
public User find(Object id) {
return em.find(User.class, id);
}
@Override
public void addRoleToUser(User person, Role userProperty) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void editRoleToUser(User person, Role userProperty) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void removeRoleToUser(User person, Role userProperty) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}