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