EJB3 и каскадное создание объектов
От: ALER_PROG  
Дата: 12.06.07 06:28
Оценка:
Привет всем.
Сталкнулся с такой проблемой... есть два Entity, которые связаны один-к-одному. Мне нужно, чтобы при создании одного бина автоматически создавался и второй. Внёс кое-какие изменения в код, но это не помогло... объясните, плиз, в чём проблема ?
(по-прежнему, при создании Owner , Rights устанавливается в Null , то есть не создаётся....)

@Entity
public class Owner implements Serializable
{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @OneToOne(cascade = CascadeType.ALL)
    @PrimaryKeyJoinColumn
    private Rights rights;
    ...
    ...

}

//--------------------------------------------------------------
//--------------------------------------------------------------

@Entity
public class Rights implements Serializable
{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    ...
    ...
}
Re: EJB3 и каскадное создание объектов
От: RomikT Германия  
Дата: 12.06.07 07:09
Оценка:
Здравствуйте, ALER_PROG, Вы писали:

ALE>Привет всем.

ALE>Сталкнулся с такой проблемой... есть два Entity, которые связаны один-к-одному. Мне нужно, чтобы при создании одного бина автоматически создавался и второй.

Так и создавайте его в конструкторе. Или просто
@Entity
public class Owner implements Serializable
{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @OneToOne(cascade = CascadeType.ALL)
    @PrimaryKeyJoinColumn
    private Rights rights = new Rights();
}

CascadeType относится к только к добавлению/удалению из базы. Сам он объекты создавать не будет.
Re[2]: EJB3 и каскадное создание объектов
От: ALER_PROG  
Дата: 12.06.07 09:08
Оценка:
Здравствуйте, RomikT, Вы писали:

RT>Здравствуйте, ALER_PROG, Вы писали:


ALE>>Привет всем.

ALE>>Сталкнулся с такой проблемой... есть два Entity, которые связаны один-к-одному. Мне нужно, чтобы при создании одного бина автоматически создавался и второй.

RT>Так и создавайте его в конструкторе. Или просто

RT>
RT>@Entity
RT>public class Owner implements Serializable
RT>{
RT>    @Id
RT>    @GeneratedValue(strategy = GenerationType.AUTO)
RT>    private Long id;

RT>    @OneToOne(cascade = CascadeType.ALL)
RT>    @PrimaryKeyJoinColumn
RT>    private Rights rights = new Rights();
RT>}
RT>

RT>CascadeType относится к только к добавлению/удалению из базы. Сам он объекты создавать не будет.

Да, спасибо
Единственное, я несовсем корректно использовал @PrimaryKeyJoinColumn (нужно указать конкретное поле — FK)
Так что достаточно указать @OneToOne(cascade = CascadeType.ALL), ну и создать сам объект, что , собственно я и не делал...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.