Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> EJB3. @oneToOne 
:(
    Опции темы
polosatij
Дата 12.4.2007, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8



пытаюсь дальше осваивать EJB.. не лаботает, где ошибка?  smile 

Код

package ejb;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.hibernate.validator.Length;


@Entity
@Table(name="User")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    private Integer id;
    private String username;
    private String password;
    private RoleType role;
    private UserInfo userInfo;
    
    public User() {
        //
    }
    
    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }
    
    public User(String username, String password, RoleType role) { //, UserInfo userInfo) {
        this.username = username;
        this.password = password;
        this.role = role;
        // this.userInfo = userInfo;
    }
    
    @Id
    @GeneratedValue
    @Column(name="ID")
    public Integer getId() {
        return this.id;
    }
    
    public void setId(Integer id) {
        this.id = id;
    }
    
    @Length(min=1, max=24)
    @Column(name="USERNAME", nullable=false, unique=true)
    public String getUsername() {
        return this.username;
    }
    
    public void setUsername(String username) {
        this.username = username;
    }
    
    @Column(name="PASSWORD", nullable=false, length=32)
    public String getPassword() {
        return this.password;
    }
    
    public void setPassword(String password) {
        this.password = password;
    }
    
    @Length(min=3, max=13)
    @Enumerated(EnumType.STRING)
    @Column(name="ROLE", nullable=false)
    public RoleType getRole() {
        return this.role;
    }
    
    public void setRole(RoleType role) {
        this.role = role;
    }
    
    @OneToOne(cascade={CascadeType.ALL})
    @JoinColumn(name="USERINFO_ID")
    public UserInfo getUserInfo() {
        return this.userInfo;
    }
    
    public void setUserInfo(UserInfo userInfo) {
        this.userInfo = userInfo;
    }
    
}


Код

package ejb;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.validator.Length;

@Entity
public class UserInfo implements Serializable {
    private static final long serialVersionUID = 1L;
    
    private int id;
    private String mail;
    /*
    private SexType sex;
    private Date birthday;
    private String zip;
    private String city;
    private String state;
    private Date timeCreated;
    */
    
    public UserInfo() {
        //
    }
    
    public UserInfo(String mail){ //, SexType sex, Date birthday, String zip, String city, String state, Date timeCreated) {
        this.mail = mail;
        /*this.sex = sex;
        this.birthday = birthday;
        this.city = city;
        this.state = state;
        this.timeCreated = timeCreated;*/
    }
    
    @Id
    @GeneratedValue
    @Column(name="ID")
    public int getId() {
        return this.id;
    }
    
    public void setId(int id) {
        this.id = id;
    }
    
    @Length(min=6, max=48)
    @Column(name="MAIL")
    public String getMail() {
        return this.mail;
    }
    
    public void setMail(String mail) {
        this.mail = mail;
    }
    
    /*
    @Length(min=4, max=6)
    @Enumerated(EnumType.STRING)
    @Column(name="SEX")
    public SexType getSex() {
        return this.sex;
    }
    
    public void setSex(SexType sex) {
        this.sex = sex;
    }
    
    @Temporal(TemporalType.DATE)
    @Column(name="BIRTHDAY")
    public Date getBirthday() {
        return this.birthday;
    }
    
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    
    @Length(min=3, max=8)
    @Column(name="ZIP")
    public String getZip() {
        return this.zip;
    }
    
    public void setZip(String zip) {
        this.zip = zip;
    }
    
    @Length(min=1, max=24)
    @Column(name="CITY")
    public String getCity() {
        return this.city;
    }
    
    public void setCity(String city) {
        this.city = city;
    }
    
    @Length(min=1, max=24)
    @Column(name="STATE")
    public String getState() {
        return this.state;
    }
    
    public void setState(String state) {
        this.state = state;
    }
    
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name="TIMECREATED")
    public Date getTimeCreated() {
        return this.timeCreated;
    }
    
    public void setTimeCreated(Date timeCreated) {
        this.timeCreated = timeCreated;
    }
    */
}


сам вызов:

Код

        User _user = new User("polosatij", "12345", RoleType.ADMINISTRATOR);
        // User user = this.manager.find(User.class, _user);
        UserInfo userInfo = new UserInfo("[email protected]");
        _user.setUserInfo(userInfo);
        this.manager.persist(_user);


ошибка:

Код

javax.ejb.EJBException: org.hibernate.validator.InvalidStateException: validation failed for: ejb.User


что-то не устраивает его в @OneToOne.. не могу понять что именно..  smile 

Это сообщение отредактировал(а) polosatij - 12.4.2007, 18:03


--------------------
PM   Вверх
Maverick
Дата 13.4.2007, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



По-моему, надо заперсистить сначала инфу про юзера...
Код

        User _user = new User("polosatij", "12345", RoleType.ADMINISTRATOR);
        UserInfo userInfo = new UserInfo("[email protected]");
        this.manager.persist(iserInfo);
 
        _user.setUserInfo(userInfo);
        this.manager.persist(_user);


или оформить отдельный метод типа Save(), в который передавать целого юзера, а там разурливать -  если userInfo.getId==null, то сначала его персистить...

Добавлено через 2 минуты и 5 секунд
В-общем, проблема в том, что на момент сохранения юзера - инфа про него не сохранена и не обладает идентификатором, а, следовательно, невозможно установление связи через него...


--------------------
smile
PM ICQ GTalk   Вверх
polosatij
Дата 13.4.2007, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8





ага.. ты прав.. это было одной из ошибок потом.. я вчера уже сам разобрался  smile 
проблема ещё была в следующем:

Код

    // @Length(min=4, max=6) // <<-- так не бывает почему-то в сочетании с нижней строкой.. хотя String не превывышает эти значения..
    @Enumerated(EnumType.STRING)


 smile 




--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0538 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.