JPA, Spring - jak hledat v databazi neexitujici zaznam? – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

JPA, Spring - jak hledat v databazi neexitujici zaznam? – Java – Fórum – Programujte.comJPA, Spring - jak hledat v databazi neexitujici zaznam? – Java – Fórum – Programujte.com

 

martin
~ Anonymní uživatel
1600 příspěvků
15. 4. 2014   #1
-
0
-

Ahoj,

mam nekolik webu ve Springu, na JPA pouzivam Hibernate. Potrebuji vyhledavat entity podle uzivatelem zadaneho id. Problem je, kdyz dane id neni v databazi, pak to hodi NullPointerException.

Resim to nasledovane: 

    People p;
    try {
      p = peopleManager.findById(Integer.parseInt(id));
      if (p != null) {
        model.addAttribute("message", "user exist, do any action");
      } else {
        model.addAttribute("message", "user NOT exist");
      }
    } catch (NullPointerException e) {
      model.addAttribute("message", "user NOT exist");
    }

Zda se mi to jako velka prasarna... Jak se to ma resit spravne?

Vsechen kod:

package com.example.test.entity;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

public class People {  
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "id")
  private int id;
  
  @Column(name="name")
  private String name;
  
  @Column(name="age")
  private int age;
}
/* ---------------------------------------------------- */
package com.example.test.dao;

import java.util.List;
import com.example.test.entity.People;

public interface PeopleDao {  
    public void save(People people);  
    public void delete(People people);    
    public void update(People people); 
    public List<People> findAll();    
    public People findById(int id);
}
/* ---------------------------------------------------- */
package com.example.test.dao;

import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.example.test.entity.People;

@Repository
public class PeopleDaoImpl implements PeopleDao {
  
  @Autowired
  private SessionFactory sessionFactory;

  @Override
  public void save(People people) {
    this.sessionFactory.getCurrentSession().save(people);    
  }
  @Override
  public void delete(People people) {
    this.sessionFactory.getCurrentSession().delete(people);    
  }
  @Override
  public void update(People people) {
    this.sessionFactory.getCurrentSession().update(people);    
  }
  @Override
  public List<People> findAll() {
    return this.sessionFactory.getCurrentSession().createQuery("from People ORDER BY age").list();
  }
  @Override
  public People findById(int id) {
    return (People) this.sessionFactory.getCurrentSession().get(People.class, id);
  }
}
/* ---------------------------------------------------- */
package com.example.test.service;

import java.util.List;
import com.example.test.entity.People;

public interface PeopleManager {  
  public void save(People people);  
    public void delete(People people);    
    public void update(People people); 
    public List<People> findAll();    
    public People findById(int id);
}
/* ---------------------------------------------------- */
package com.example.test.service;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.example.test.dao.PeopleDao;
import com.example.test.entity.People;

@Service
@Transactional
public class PeopleManagerImpl implements PeopleManager {
  
  @Autowired
  private PeopleDao peopleDao;

  @Override
  public void save(People people) {
    peopleDao.save(people);  
  }
  @Override
  public void delete(People people) {
    peopleDao.delete(people);    
  }
  @Override
  public void update(People people) {
    peopleDao.update(people);
  }
  @Override
  public List<People> findAll() {
    return peopleDao.findAll();
  }
  @Override
  public People findById(int id) {
    return peopleDao.findById(id);
}
/* ---------------------------------------------------- */
package com.example.test.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.example.test.entity.People;
import com.example.test.service.PeopleManager;

@Controller
public class PeopleController {  
  @Autowired
  private PeopleManager peopleManager;
  
  @RequestMapping(value = "/people/{id}", method = RequestMethod.GET)
  public String home(Model model, @PathVariable("id") String id) {    
    People p;
    try {
      p = peopleManager.findById(Integer.parseInt(id));
      if (p != null) {
        model.addAttribute("message", "user exist, do any action");
      } else {
        model.addAttribute("message", "user NOT exist");
      }
    } catch (NullPointerException e) {
      model.addAttribute("message", "user NOT exist");
    }
    return "people";
  }  
}
/* ---------------------------------------------------- */
Nahlásit jako SPAM
IP: 194.132.32.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý