Пустая Объединяющая таблица, следующая из JPA ManyToMany

У меня есть приложение, в котором я пытаюсь реализовать отношение ManyToMany между 2 использованиями объектов, в спящем режиме как мой поставщик JPA.

Примером, который я пробую, является однонаправленный, где Камера может иметь несколько Lenses, и Lense может вписаться в несколько Камер.

Следующее является моим классом объекта... (Просто вставка соответствующей части его)

Камера:

@Entity
@Table(name = "CAMERAS")
public class Camera implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "CAM_ID", nullable = false)
    private Long camId;

    @Column(name="CAMERA_BRAND")
    private String cameraBrand;

    @ManyToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE},fetch=FetchType.EAGER)
    @JoinTable(name="CAMERA_LENS",joinColumns=@JoinColumn(name="CAM_ID"),inverseJoinColumns=@JoinColumn(name="LENS_ID"))
        private Set<Lens> lenses = new HashSet<Lens>();

    ...
}

Линза:

@Entity
@Table(name = "LENSES")
public class Lens implements Serializable {        
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "LENS_ID", nullable = false)
    private Long lensId;

    @Column(name="LENS_NAME")
    private String name;

    ...
}

В тестовом сценарии я пытаюсь сохранить экземпляр Камеры как это...

@Test
public void test_saveCameraLenseManyToMany() {
    Camera cam = new Camera();
    cam.setCameraBrand("Nikon");
    Set<Camera> cameras = new HashSet<Camera>();
    cameras.add(cam);

    Set<Lens> lenses = new HashSet<Lens>();
    Lens lens1 = new Lens();
    lens1.setName("WideAngle");
    lenses.add(lens1);

    cam.setLenses(lenses);

    // concreteDAO.saveLens(lens1);
    concreteDAO.saveCamera(cam);
}

Персистентность происходит успешно, и нет никакой ошибки/исключения, брошенной, в спящем режиме. Однако вопреки ожиданию, строка не создается в JoinTable (CAMERA_LENS в этом случае). Строка создается в каждой из таблиц Lens и Camera только, таким образом, не служа цели ManyToMany. Однако DDL сгенерирован для объединяющей таблицы, и это создается также, но просто что это не имеет никаких записей.

Любая помощь или указатели очень ценились бы.

6
задан Pascal Thivent 9 August 2010 в 12:19
поделиться