feat(DevWeb): Edit findByField to search with int/boolean etc...

This commit is contained in:
Lucàs
2024-03-28 17:38:25 +01:00
parent a46a1a0f1a
commit 29388a96dd
5 changed files with 18 additions and 29 deletions
@@ -78,5 +78,5 @@ public abstract class DAO<D> {
* @throws DAOException en cas de problème
* @see D
*/
public abstract D[] findByField(String field, String value) throws DAOException;
public abstract D[] findByField(String field, Object value) throws DAOException;
}
@@ -10,6 +10,7 @@ import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
import uppa.project.dao.DAO;
import uppa.project.dao.DAOException;
import uppa.project.pojo.Game;
@@ -41,16 +42,15 @@ public class DAO_JPA_Game extends DAO<Game> {
@Override
public Game findById(int id) throws DAOException {
Game result = entityManager.find(Game.class, new BigDecimal(id));
entityManager.flush();
return result;
return entityManager.find(Game.class, new BigDecimal(id));
}
@Override
public Game[] findByField(String field, String value) throws DAOException {
TypedQuery<Game> query = entityManager.createQuery("SELECT u FROM Game u WHERE ?1=?2", Game.class);
query.setParameter(1, field);
query.setParameter(2, value);
public Game[] findByField(String field, Object value) throws DAOException {
String sqlQuery = String.format("SELECT u FROM Game u WHERE u.%s = (:val)", field);
TypedQuery<Game> query = entityManager.createQuery(sqlQuery, Game.class);
query.setParameter("val", value);
List<Game> results = query.getResultList();
return results.toArray(new Game[0]);
}
@@ -69,15 +69,11 @@ public class DAO_JPA_Game extends DAO<Game> {
@Override
public void update(Game data) throws DAOException {
entityManager.getTransaction().begin();
entityManager.merge(data);
entityManager.getTransaction().commit();
}
@Override
public void delete(Game data) throws DAOException {
entityManager.getTransaction().begin();
entityManager.remove(data);
entityManager.getTransaction().commit();
}
}
@@ -36,16 +36,15 @@ public class DAO_JPA_Player extends DAO<Player> {
@Override
public Player findById(int id) throws DAOException {
Player result = entityManager.find(Player.class, new BigDecimal(id));
entityManager.flush();
return result;
return entityManager.find(Player.class, new BigDecimal(id));
}
@Override
public Player[] findByField(String field, String value) throws DAOException {
TypedQuery<Player> query = entityManager.createQuery("SELECT p FROM Player p WHERE ?1=?2", Player.class);
query.setParameter(1, field);
query.setParameter(2, value);
public Player[] findByField(String field, Object value) throws DAOException {
String sqlQuery = String.format("SELECT p FROM Player p WHERE p.%s = (:val)", field);
TypedQuery<Player> query = entityManager.createQuery(sqlQuery, Player.class);
query.setParameter("val", value);
List<Player> results = query.getResultList();
return results.toArray(new Player[0]);
}
@@ -64,15 +63,11 @@ public class DAO_JPA_Player extends DAO<Player> {
@Override
public void update(Player data) throws DAOException {
entityManager.getTransaction().begin();
entityManager.merge(data);
entityManager.getTransaction().commit();
}
@Override
public void delete(Player data) throws DAOException {
entityManager.getTransaction().begin();
entityManager.remove(data);
entityManager.getTransaction().commit();
}
}
@@ -36,11 +36,10 @@ public class DAO_JPA_RecoveryPasswordToken extends DAO<RecoveryPasswordToken> {
@Override
public RecoveryPasswordToken findById(int id) throws DAOException {
RecoveryPasswordToken result = entityManager.find(RecoveryPasswordToken.class, new BigDecimal(id));
return result;
return entityManager.find(RecoveryPasswordToken.class, new BigDecimal(id));
}
public RecoveryPasswordToken[] findByField(String field, String value) throws DAOException {
public RecoveryPasswordToken[] findByField(String field, Object value) throws DAOException {
String sqlQuery = String.format("SELECT r FROM RecoveryPasswordToken r WHERE r.%s = (:val)", field);
TypedQuery<RecoveryPasswordToken> query = entityManager.createQuery(sqlQuery, RecoveryPasswordToken.class);
@@ -36,11 +36,10 @@ public class DAO_JPA_User extends DAO<User> {
@Override
public User findById(int id) throws DAOException {
User result = entityManager.find(User.class, new BigDecimal(id));
return result;
return entityManager.find(User.class, new BigDecimal(id));
}
public User[] findByField(String field, String value) throws DAOException {
public User[] findByField(String field, Object value) throws DAOException {
String sqlQuery = String.format("SELECT u FROM User u WHERE u.%s = (:val)", field);
TypedQuery<User> query = entityManager.createQuery(sqlQuery, User.class);