Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Hibernate Validator как его кушать


Автор: acvilon 7.8.2009, 16:07
Продолжаю тему на счет SpringMVC+Ejb+JPA

Теперь возникла проблема, как отвалидировать ентитю при помощи Hibernate Validator Framework. 
Вот ентитя и session stateles bean.
Код

package ru.iamready.action;

import ru.iamready.model.User;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.persistence.PersistenceContext;
import java.util.List;

import org.hibernate.validator.ClassValidator;
import org.hibernate.validator.InvalidValue;

@Stateless(name = "UserLogin", mappedName = "UserLogin")
public class UserLoginAction implements UserLogin {

    @PersistenceContext
    private EntityManager entityManager;

    private User user;

    @Override
    public void register(String name, String surname) {
        User user = new User();
        user.setName(name);
        user.setSurname(surname);

        ClassValidator validator = new ClassValidator(User.class);
        InvalidValue[] errors = validator.getInvalidValues(user);
        
        entityManager.persist(user);
        entityManager.flush();
    }

    @Override
    public String sayHello(String name) {
        return "Fuck you, " + name;
    }

    @Override
    public List<User> getAllUsers() {
        Query query = entityManager.createQuery("select user from User user");
        return query.getResultList();
    }
}

package ru.iamready.model;


import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
import org.hibernate.validator.event.JPAValidateListener;

import javax.persistence.*;
import static javax.persistence.GenerationType.IDENTITY;
import java.io.Serializable;


@Entity
@EntityListeners(JPAValidateListener.class )
@Table(name = "testUser", catalog = "ready")
public class User implements Serializable{
    private Integer id;
    private String name;
    private String surname;

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Column(name = "name", nullable = false)
    @Length(max = 5)
    @NotNull
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Column(name = "surname", nullable = false)
    @Length(max = 5)
    @NotNull
    public String getSurname() {
        return surname;
    }

    public void setSurname(String surname) {
        this.surname = surname;
    }
}


И валидация с помощью этого фреймворка не срабатывает при сохранения и не работает если ее дергать руками, если кто-то сталкивался с этим жду от вас комментов.
А то я уже как сам с собой в этих темах разговариваю(

Проектик прилагаю!


Автор: AntonSaburov 7.8.2009, 17:59
Ну вы батенька уж слишком - ради одного Entity (во всяком случае я только один нашел) нагородили целое EJB приложение. А попроще пример не получается сделать ?

Добавлено @ 18:03
Только что для своего примера подставил ограничение по длине - работает. Просто установил аннотацию Length и подключил JAR. И сразу получил: 
org.hibernate.validator.InvalidStateException: validation failed

Что вообщем-то и должно было случиться

Автор: acvilon 7.8.2009, 18:04
Ну как-бы пример уже работающий, до этого тема была, где я учился дружить  ejb со спрингом. Сейчас хочу использовать hibernate validator, а он нивкакую не хочет валидировать. Есть предположения почему? И как бы на основе этого зачатка, я далее начну писать проект, сейчас надо зазрешить вопрос с технологиями. 

Автор: AntonSaburov 7.8.2009, 18:39
Это он у тебя работающий - а нам же надо для проверки еще базу данных создавать и таблицы smile Время все-таки.

Попробуй standalone приложение набросать. Посмотреть можно здесь - http://java-course.ru/students/part18.html

Останется только добавить еще hibernate-validator.jar и использовать в каком-нибудь Entity аннотации для валидации.
Ну и запустить.

Автор: acvilon 8.8.2009, 20:41
Да, люди все  ленивые, никто не может скачать проект и написать в командной строке mvn clean install((((

Разобрался в чем проблема. Она заключалась в том, что модель(ентити) лежат в джарники, который кладется в либы и доступен и в ejb модуле и в war модуле. Это весьма странно, сейчас пытаюсь разобраться, как же спроектировать приложение, такое приложение, точнее как его перепроектировать или же как настроить, JPA и Hibernate Validator.

Автор: acvilon 8.8.2009, 21:15
Closed

Автор: AntonSaburov 11.8.2009, 18:19
Цитата(acvilon @  8.8.2009,  20:41 Найти цитируемый пост)
написать в командной строке mvn clean install((((

Все ставим Maven ? smile

Автор: serger 12.8.2009, 07:44
Цитата(AntonSaburov @  11.8.2009,  18:19 Найти цитируемый пост)
Все ставим Maven ? smile 

Давно пора! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)