JavaSpring:datatable在使用DAO和Serializable时不起作用
我正在尝试使用(JavaSpring、hibernate、mysql、jquery、javascript)填充jsp数据表 DAO的设计和使用可序列化的库 问题是,尽管表在数据库中有一些行,但网页上并没有显示任何数据 控制器类:JavaSpring:datatable在使用DAO和Serializable时不起作用,java,spring,hibernate,dao,serializable,Java,Spring,Hibernate,Dao,Serializable,我正在尝试使用(JavaSpring、hibernate、mysql、jquery、javascript)填充jsp数据表 DAO的设计和使用可序列化的库 问题是,尽管表在数据库中有一些行,但网页上并没有显示任何数据 控制器类: @Autowired private BrickDAO brickDAO; @Autowired private BrickDetDAO brickDetDAO; private static final Logger logger = LoggerFactory.
@Autowired
private BrickDAO brickDAO;
@Autowired
private BrickDetDAO brickDetDAO;
private static final Logger logger = LoggerFactory.getLogger(ManagementController.class);
@RequestMapping(value="/bricks", method=RequestMethod.GET)
public ModelAndView showManageBricks(@RequestParam(name="operation", required=false) String operation) {
ModelAndView mv = new ModelAndView("page");
mv.addObject("userClickManageBricks", true);
mv.addObject("title", "Manage Bricks");
Brick nBrick = new Brick();
mv.addObject("brick", nBrick);
if(operation!=null) {
if(operation.equals("brick"))
{
mv.addObject("message", "Record Submitted Successfully!");
}
}
return mv;
}
@RequestMapping(value="/{id}/brick", method=RequestMethod.GET)
public ModelAndView showEditBricks(@PathVariable int id) {
ModelAndView mv = new ModelAndView("page");
mv.addObject("userClickManageBricks", true);
mv.addObject("title", "Manage Bricks");
Brick nBrick = brickDAO.get(id);
mv.addObject("brick", nBrick);
return mv;
}
@RequestMapping(value="/bricks", method=RequestMethod.POST)
public String handleProductSubmission(@Valid @ModelAttribute("brick") Brick mBrick, BindingResult results, Model model, HttpServletRequest request) {
if(results.hasErrors())
{
model.addAttribute("userClickManageBricks", true);
model.addAttribute("title", "Manage Bricks");
model.addAttribute("message", "Validation failed for Product Submission");
return "page";
}
logger.info(mBrick.toString());
if(mBrick.getId() == 0) {
brickDAO.add(mBrick);
}
else
{
brickDAO.update(mBrick);
}
return "redirect:/manage/bricks?operation=brick";
}
@RequestMapping(value = "/brickdetail", method=RequestMethod.POST)
public String managePostCategory(@ModelAttribute("brickdetail") BrickDetail mBrickDetail, HttpServletRequest request) {
brickDetDAO.add(mBrickDetail);
return "redirect:" + request.getHeader("Referer") + "?success=category";
}
@ModelAttribute("brickdetail")
public List<BrickDetail> getBrickDetail() {
return brickDetDAO.list();
}
}
DAO接口
公共接口BrickDAO{
Brick get(int brickId);
List<Brick> list();
boolean add(Brick brick);
boolean update(Brick brick);
boolean delete(Brick brick);
List<Brick> getBricksByParam(String param, int count);
}
Brick-get(int-brickId);
List();
布尔加法(砖块);
布尔更新(砖块);
布尔删除(砖块);
列出getBricksByParam(字符串参数,int计数);
}
DAOImpl:
@Autowired
private SessionFactory sessionFactory;
@Override
public Brick get(int brickId) {
try {
return sessionFactory
.getCurrentSession()
.get(Brick.class,Integer.valueOf(brickId));
}
catch(Exception ex) {
ex.printStackTrace();
}
return null;
}
@Override
public List<Brick> list() {
return sessionFactory
.getCurrentSession()
.createQuery("FROM Brick" , Brick.class)
.getResultList();
}
@Override
public boolean add(Brick brick) {
try {
sessionFactory
.getCurrentSession()
.persist(brick);
return true;
}
catch(Exception ex) {
ex.printStackTrace();
}
return false;
}
@Override
public boolean update(Brick brick) {
try {
sessionFactory
.getCurrentSession()
.update(brick);
return true;
}
catch(Exception ex) {
ex.printStackTrace();
}
return false;
}
@Override
public boolean delete(Brick brick) {
try {
return this.update(brick);
}
catch(Exception ex) {
ex.printStackTrace();
}
return false;
}
public List<Brick> listActiveBricksByCategory(int categoryId) {
String selectActiveBricksByCategory = "FROM Brick WHERE active = :active AND categoryId = :categoryId";
return sessionFactory
.getCurrentSession()
.createQuery(selectActiveBricksByCategory, Brick.class)
.setParameter("active", true)
.setParameter("categoryId",categoryId)
.getResultList();
}
@Override
public List<Brick> getLatestActiveBricks(int count) {
return sessionFactory
.getCurrentSession()
.createQuery("FROM Product WHERE active = :active ORDER BY id", Brick.class)
.setParameter("active", true)
.setFirstResult(0)
.setMaxResults(count)
.getResultList();
}
@Override
public List<Brick> getBricksByParam(String param, int count) {
String query = "FROM Brick WHERE ORDER BY " + param + " DESC";
return sessionFactory
.getCurrentSession()
.createQuery(query,Brick.class)
.setFirstResult(0)
.setMaxResults(count)
.getResultList();
}
@Autowired
私人会话工厂会话工厂;
@凌驾
公共砖块获取(int brickkid){
试试{
返回会话工厂
.getCurrentSession()
.get(Brick.class,Integer.valueOf(brickId));
}
捕获(例外情况除外){
例如printStackTrace();
}
返回null;
}
@凌驾
公开名单(){
返回会话工厂
.getCurrentSession()
.createQuery(“来自Brick”,Brick.class)
.getResultList();
}
@凌驾
公共布尔添加(砖){
试试{
会话工厂
.getCurrentSession()
.坚持(砖块);
返回true;
}
捕获(例外情况除外){
例如printStackTrace();
}
返回false;
}
@凌驾
公共布尔更新(砖块){
试试{
会话工厂
.getCurrentSession()
.更新(砖块);
返回true;
}
捕获(例外情况除外){
例如printStackTrace();
}
返回false;
}
@凌驾
公共布尔删除(砖块){
试一试{
返回此。更新(砖块);
}
捕获(例外情况除外){
例如printStackTrace();
}
返回false;
}
公共列表listActiveBricksByCategory(int categoryId){
字符串selectActiveBricksByCategory=“FROM Brick WHERE active=:active AND categoryId=:categoryId”;
返回会话工厂
.getCurrentSession()
.createQuery(选择ActiveBricksByCategory,Brick.class)
.setParameter(“活动”,真)
.setParameter(“categoryId”,categoryId)
.getResultList();
}
@凌驾
公共列表getLatestActiveBricks(整数计数){
返回会话工厂
.getCurrentSession()
.createQuery(“来自活动产品=:按id的活动订单”,Brick.class)
.setParameter(“活动”,真)
.setFirstResult(0)
.setMaxResults(计数)
.getResultList();
}
@凌驾
公共列表getBricksByParam(字符串参数,整数计数){
String query=“FROM Brick WHERE ORDER BY”+param+“DESC”;
返回会话工厂
.getCurrentSession()
.createQuery(查询,Brick.class)
.setFirstResult(0)
.setMaxResults(计数)
.getResultList();
}
提前感谢这是实体类而不是DTO。DTO是可用于代理对象的数据传输对象。请确保在调试时,Id保持为0,且不会增加到1。这可能是由于控制台上没有显示表格的选择。该问题与控制器未调用实体类或Id设置器未递增为1有关。因此,jquery表中没有显示任何结果这是一个使用lombok的好时机,我知道它与您的问题无关,但它将在将来帮助您。它是实体类而不是DTO。DTO是可用于代理对象的数据传输对象。请确保在调试时,Id保持为0,且不会增加到1。这可能是由于控制台上没有显示表格的选择。该问题与控制器未调用实体类或Id设置器未递增为1有关。因此,jquery表中没有显示任何结果这是一个使用lombok的好时机,我知道这与您的问题无关,但它将在将来帮助您。
@Autowired
private SessionFactory sessionFactory;
@Override
public Brick get(int brickId) {
try {
return sessionFactory
.getCurrentSession()
.get(Brick.class,Integer.valueOf(brickId));
}
catch(Exception ex) {
ex.printStackTrace();
}
return null;
}
@Override
public List<Brick> list() {
return sessionFactory
.getCurrentSession()
.createQuery("FROM Brick" , Brick.class)
.getResultList();
}
@Override
public boolean add(Brick brick) {
try {
sessionFactory
.getCurrentSession()
.persist(brick);
return true;
}
catch(Exception ex) {
ex.printStackTrace();
}
return false;
}
@Override
public boolean update(Brick brick) {
try {
sessionFactory
.getCurrentSession()
.update(brick);
return true;
}
catch(Exception ex) {
ex.printStackTrace();
}
return false;
}
@Override
public boolean delete(Brick brick) {
try {
return this.update(brick);
}
catch(Exception ex) {
ex.printStackTrace();
}
return false;
}
public List<Brick> listActiveBricksByCategory(int categoryId) {
String selectActiveBricksByCategory = "FROM Brick WHERE active = :active AND categoryId = :categoryId";
return sessionFactory
.getCurrentSession()
.createQuery(selectActiveBricksByCategory, Brick.class)
.setParameter("active", true)
.setParameter("categoryId",categoryId)
.getResultList();
}
@Override
public List<Brick> getLatestActiveBricks(int count) {
return sessionFactory
.getCurrentSession()
.createQuery("FROM Product WHERE active = :active ORDER BY id", Brick.class)
.setParameter("active", true)
.setFirstResult(0)
.setMaxResults(count)
.getResultList();
}
@Override
public List<Brick> getBricksByParam(String param, int count) {
String query = "FROM Brick WHERE ORDER BY " + param + " DESC";
return sessionFactory
.getCurrentSession()
.createQuery(query,Brick.class)
.setFirstResult(0)
.setMaxResults(count)
.getResultList();
}