1
我有一個抽象類「代理」 和3個其他子類「開發」,「支持」和「管理」通抽象的參數與春天開機requestMapping功能
這裏是「代理」 的代碼源:
@Entity
@Table(name = "agents")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "role", discriminatorType =
DiscriminatorType.STRING, length = 3)
public abstract class Agent implements Serializable {
@Id
@GeneratedValue
private int id;
private String name;
private String lastName;
.........}
「開發」 的代碼源CLASSE
@Entity
@DiscriminatorValue("dev")
public class Developer extends Agent {
/*------------------- constructors -------------------*/
public Developer() {
super();
}
public Developer(String name, String lastName, ....) {
super(name, lastName, ...);
}
}
類的其餘部分 「管理」, 「Supprort」 具有相同的形式。
這裏是我的控制器代碼管理控制器:
@Controller
public class AdminController {
/*------- attributs -------*/
@Autowired
@Resource(name = "admin")
private IAdmin iAdmin;
@Autowired
private AgentValidator agentValidator;
........
@RequestMapping(value = "/admin/save/developer", method = RequestMethod.POST)
public String createAgentAccount(Model model, String admin_id, String confirmPassword, String action, @ModelAttribute("agent") Developer developer, BindingResult result) {
Agent admin = iAdmin.profile(Integer.parseInt(admin_id));
developer.setConfirmPassword(confirmPassword);
agentValidator.validate(developer, result);
if (result.hasErrors()) {
model.addAttribute("action", action);
return "formAgents";
}
if (action.equals("create")) {
iAdmin.createAgent(admin, developer);
} else {
iAdmin.updateAgent(admin, developer);
}
return "redirect:/admin/show/agents";
}
.......
正如你看到這個函數創建和更新開發者賬戶,但我需要保存所有代理類型[管理員,開發人員,支持],我試試這個:
public String createAgentAccount(Model model, ... , @ModelAttribute("agent") Agent developer, BindingResult result) {.....}
,但我得到這個錯誤:
Tue Aug 22 19:54:03 WEST 2017
There was an unexpected error (type=Internal Server Error, status=500).
Failed to instantiate [com.GemCrmTickets.entities.Agent]: Is it an abstract class?; nested exception is java.lang.InstantiationException
我知道這是不可能的牛逼o instanciate抽象類。我不想爲每種類型的代理做一個功能,一個人就是最好的解決方案。所以我需要你的幫助。謝謝你。
你可以給我一個例子,請! – Mostafa
我更新了帖子。 – hadilq
是的,這是謝謝你:) – Mostafa