@Test
 public void testJPALockScope() {
   doInJPA(
       this::entityManagerFactory,
       entityManager -> {
         Person person = new Person("John Doe");
         entityManager.persist(person);
         Phone home = new Phone("123-456-7890");
         Phone office = new Phone("098-765-4321");
         person.getPhones().add(home);
         person.getPhones().add(office);
         entityManager.persist(person);
       });
   doInJPA(
       this::entityManagerFactory,
       entityManager -> {
         log.info("testJPALockScope");
         Long id = 1L;
         // tag::locking-jpa-query-hints-scope-example[]
         Person person =
             entityManager.find(
                 Person.class,
                 id,
                 LockModeType.PESSIMISTIC_WRITE,
                 Collections.singletonMap(
                     "javax.persistence.lock.scope", PessimisticLockScope.EXTENDED));
         // end::locking-jpa-query-hints-scope-example[]
         assertEquals(2, person.getPhones().size());
       });
 }
 @Test
 public void testLifecycle() {
   doInJPA(
       this::entityManagerFactory,
       entityManager -> {
         Person person = new Person(1L);
         entityManager.persist(person);
         person.addPhone(new Phone(1L, "landline", "028-234-9876"));
         person.addPhone(new Phone(2L, "mobile", "072-122-9876"));
       });
   doInJPA(
       this::entityManagerFactory,
       entityManager -> {
         Person person = entityManager.find(Person.class, 1L);
         Set<Phone> phones = person.getPhones();
         Assert.assertEquals(2, phones.size());
         phones.stream().forEach(phone -> log.infov("Phone number %s", phone.getNumber()));
         person.removePhone(phones.iterator().next());
         Assert.assertEquals(1, phones.size());
       });
   doInJPA(
       this::entityManagerFactory,
       entityManager -> {
         Person person = entityManager.find(Person.class, 1L);
         Set<Phone> phones = person.getPhones();
         Assert.assertEquals(1, phones.size());
       });
 }
Beispiel #3
0
  /**
   * Tests to {@link EntityManager#find(Class, Object)} person.
   *
   * @since $version
   * @author hceylan
   */
  @Test
  public void testFind() {
    final Person person = this.person();
    this.persist(person);

    this.commit();
    this.close();

    final Person person2 = this.find(Person.class, person.getId());
    Assert.assertEquals(person.getName(), person2.getName());
    Assert.assertEquals(person.getPhones().size(), person2.getPhones().size());
  }
Beispiel #4
0
  public static List<String> getPhonesFromPersonName(String personName)
      throws NotExistsPersonException {
    Person person = getPersonFromIdentifier(personName);

    List<Phone> phones = person.getPhones();
    List<String> result = new ArrayList<String>();

    for (Phone phone : phones) {
      result.add(phone.getPhone());
    }
    return result;
  }
  @Test
  public void testBuildLockRequest() {
    doInJPA(
        this::entityManagerFactory,
        entityManager -> {
          log.info("testBuildLockRequest");
          Person person = new Person("John Doe");
          Phone home = new Phone("123-456-7890");
          Phone office = new Phone("098-765-4321");
          person.getPhones().add(home);
          person.getPhones().add(office);
          entityManager.persist(person);
          entityManager.flush();
        });
    doInJPA(
        this::entityManagerFactory,
        entityManager -> {
          Long id = 1L;
          // tag::locking-buildLockRequest-example[]
          Person person = entityManager.find(Person.class, id);
          Session session = entityManager.unwrap(Session.class);
          session
              .buildLockRequest(LockOptions.NONE)
              .setLockMode(LockMode.PESSIMISTIC_READ)
              .setTimeOut(LockOptions.NO_WAIT)
              .lock(person);
          // end::locking-buildLockRequest-example[]
        });

    doInJPA(
        this::entityManagerFactory,
        entityManager -> {
          Long id = 1L;
          // tag::locking-buildLockRequest-scope-example[]
          Person person = entityManager.find(Person.class, id);
          Session session = entityManager.unwrap(Session.class);
          session
              .buildLockRequest(LockOptions.NONE)
              .setLockMode(LockMode.PESSIMISTIC_READ)
              .setTimeOut(LockOptions.NO_WAIT)
              .setScope(true)
              .lock(person);
          // end::locking-buildLockRequest-scope-example[]
        });
  }
 @Test
 public void testLifecycle() {
   doInJPA(
       this::entityManagerFactory,
       entityManager -> {
         Person person = new Person(1L);
         entityManager.persist(person);
         person.addPhone(new Phone(1L, "landline", "028-234-9876"));
         person.addPhone(new Phone(2L, "mobile", "072-122-9876"));
         entityManager.flush();
         person.removePhone(person.getPhones().get(0));
       });
   doInJPA(
       this::entityManagerFactory,
       entityManager -> {
         entityManager.find(Person.class, 1L).getPhones().size();
       });
 }