Java EE, создание объекта сущности с однозначной ассоциацией - PullRequest
0 голосов
/ 07 октября 2011

У меня есть две сущности, A и B. A имеет отношение один к одному B.

    class A {
        String aValue;
        B b;
    }
    class B {
       String bValue;
    }

Класс B уже заполнен. Теперь пользователь на веб-сайте выбирает то, что он хочет представить. На сервере мы получаем идентификатор того, что это был за B.

Вопрос: Как мне создать новый A, фактически не делая запрос БД с запросом B, который имеет этот идентификатор. Я имею в виду, таблица A в базе данных имеет только ссылку на идентификатор. Нужно иметь возможность установить этот Id без получения B.

Ответы [ 2 ]

0 голосов
/ 14 октября 2011

Если вы используете JPA и предполагаете следующее:

@Entity
@Table(name="A")
class A {
    @Id
    @Column(name="id")
    private int id;
    String aValue;
    @OneToOne
    B b;
    // Getters, setters and other stuff
}

@Entity
@Table(name="B")
class B {
   @Id
   @Column(name="id")
   private int id;
   Integer Id;
   String bValue;
   // Getters, setters and other stuff
}

Если вы теперь идентифицируете сущность B. Вы можете просто сделать сохранение следующим образом:

B b = new B();
b.setId(1000); //Assuming that you know the id. 
               //There is no necessary fill all the object. Just the PK is needed.
A a = new A();
a.setId(100);
a.setAValue("nothing");
a.setB(b);
em.persist(a);

У меня естьпроверил это с Hibernate в качестве поставщика устойчивости.Если вы используете другой ORM, укажите его.

0 голосов
/ 07 октября 2011

Вы должны взглянуть на JPA 2.0.

С JPA вы можете определить отношения между двумя объектами для автоматического получения связанных объектов.

...