0

Мне было интересно, можно ли добавить член Set в качестве переменной-члена класса, объект которого затем можно поместить в качестве значения в карту.Установить <T> на карте <K,V> в Java

Моя идея - использовать HashSet<T> projects в качестве переменной-члена для моего класса сотрудников. Но я хотел бы, чтобы запрос выполнялся в базе данных, которая будет возвращать результаты запроса в виде объекта Map>, где int будет employeeId, а Set - проектами. это вообще возможно?

+0

Запрос базы данных не будет возвращать объекты, всего несколько примитивов. Вам нужно будет построить «Map» – mrres1

+0

@ mrres1, я уже это знаю. мой вопрос был не тот. – ha9u63ar

ответ

1

Попробуйте что-то вроде этого

class Project{ 
    int pid; 
    int name; 
    //Getter and setter 
} 

Создать класс Employee

public class Employee { 
    int employeeId; 
    String name; 
    Set<Project> projects; 
    //getter , setter or add methods 
} 

Теперь вы можете использовать выше двух классов в DAO

public class EmployeesDao{ 

/* Get multiple employee-projects */ 
public Map<Integer, Set<Project>> getManyEmployeeAndProjects(){ 
    Map<Integer, Set<Project>> emps = new HashMap<Integer, Set<Project>>(); 
    //query and populate 
    return emps; 

} 
/** 
    * Get single employee 
    */ 
public Employee getEmployee(){ 
    //Query and return Employee 
    return new Employee(); 
} 
} 

, как говорится, я думаю, что вы можете только необходимо вернуть список сотрудников, потому что у Employee будет идентификатор сотрудника и проекты

public List<Employee> getEmployees(){ 
    //create list of Employee object 
} 
+0

выглядит так, как я сам думал. Спасибо дружище! :) – ha9u63ar

2

Это определенно выполнимо. Похоже, вы осуществляете отношения «многие ко многим» между сотрудниками и проектами. Это будет соответствовать паре таблиц с таблицей соединений для их соединения.

Ваше объявление будет прочитано вашими сотрудниками и вашими проектами, а затем добавьте проекты в каждый набор сотрудников.

Я должен упомянуть, что это не очень хорошая идея: выставить набор как переменную-член, потому что наборы изменяемы. Вы можете сделать переменную private и выставить методы для добавления/запроса проектов из вашего объекта.