Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Table Name: User
- ---------------------
- id | email
- ---------------------
- 1 | m@gmail.com
- 2 | e@gmail.com
- ---------------------
- Table Name: Userrole
- ----------------------------------------
- roleid | userid | rolename
- ----------------------------------------
- 1 | 1 | Admin
- 2 | 1 | HR
- 3 | 2 | Employee
- 4 | 2 | Executive
- ----------------------------------------
- @Entity
- @Table(name="user")
- public class User{
- @Id
- @GeneratedValue
- private int id;
- @Column
- private String email;
- @OneToMany
- private List<Userrole> userroles;
- public void setId(int id){
- this.id = id;
- }
- public void setEmail(String email){
- this.email= email;
- }
- public int getId(){
- return id;
- }
- public String getEmail(){
- return email;
- }
- public List<Userrole> getUserrole(){
- return userroles;
- }
- }
- @Entity
- @Table(name="userrole")
- public classs Userrole{
- @Id
- @GeneratorValue
- private int roleid;
- @Column
- private String rolename;
- @ManyToOne
- private User user;
- // setter and getter
- }
- public List<User> findAall(){
- // Type casting will throw an error
- // This will throw error
- return (List<User>)session.getCurrentSession().createQuery("from User u join u.userroles");
- // this will return List<Object[]>
- return session.getCurrentSession().createQuery("from User u join u.userroles");
- // So i want to convert to this DTO using ModelMapper object
- }
- public class UserDTO{
- private int id;
- private String email;
- private List<Userrole> roleusers;
- // setter and getter
- }
- public class UserroleDTO{
- private int roleid;
- private String rolename;
- //settter and getter
- }
- public interface UserDao{
- public List<User> findAll();
- }
- @Repository
- public class UserDaoImpl implements UserDao{
- @Override
- public List<User> findAll(){
- // This will throw an error: ClassCastException
- return (List<User>)session.getCurrentSession().createQuery("from User u join u.userroles");
- // This will work perfectly and return List<Object[]>
- return session.getCurrentSession().createQuery("from User u join u.userroles");
- }
- }
- @Controller
- public class HomeController{
- @Autowired
- private UserDao doa;
- ModelMapper modelMapper = new ModelMapper();
- @RequestMapping(value="/list")
- public List<User> findAll(){
- List<User> list = dao.findAll();
- List<UserDTO> dto = list.stream().map(user -> convertToDto(user)).collect(Collectors.toList());
- return dto;
- // This will return
- [
- {
- "id":1,
- "email":"m@gmail.com",
- "userroles":[
- {
- "roleid":1,
- "rolename":"Admin"
- },
- {
- "roleid":2,
- "rolename":"HR"
- }
- ]
- },
- {
- "id":1,
- "email":"m@gmail.com",
- "userroles":[
- {
- "roleid":1,
- "rolename":"Admin"
- },
- {
- "roleid":2,
- "rolename":"HR"
- }
- ]
- },
- {
- "id":2,
- "email":"e@gmail.com",
- "userroles":[
- {
- "roleid":3,
- "rolename":"Employee"
- },
- {
- "roleid":4,
- "rolename":"Executive"
- }
- ]
- },
- {
- "id":2,
- "email":"e@gmail.com",
- "userroles":[
- {
- "roleid":3,
- "rolename":"Employee"
- },
- {
- "roleid":4,
- "rolename":"Executive"
- }
- ]
- }
- ]
- // It should return
- [
- {
- "id":1,
- "email":"m@gmail.com",
- "userroles":[
- {
- "roleid":1,
- "rolename":"Admin"
- },
- {
- "roleid":2,
- "rolename":"HR"
- }
- ]
- },
- {
- "id":2,
- "email":"e@gmail.com",
- "userroles":[
- {
- "roleid":3,
- "rolename":"Employee"
- },
- {
- "roleid":4,
- "rolename":"Executive"
- }
- ]
- }
- ]
- }
- public UserDTO convertToDto(User user){
- UserDTO dto = modelMapper.map(user,UserDTO.class);
- return dto;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement