spring-projects / spring-projects/spring-data-relational

Make sure referenced immutable Entities get updated in collections even if the immutable parent doesn't have an explicit id [DATAJDBC-433]

Ouverte
#653 0 commentaires 0 réactions 1 personne assignée Voir sur GitHub

@schauder y travaille déjà.

Depuis le 31/12/2020.

type: bug
Langage dominant
Java
Étoiles
827
Forks
394
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Jens Schauder opened DATAJDBC-433 and commented

If an entity A contains a collection List<C> with A and C both being immutable, A needs to get updated even though it might not have an id if C has or any of the classes it references directly or indirectly.

This was ensured by DATAJDBC-291 by the test below but it is not entirely sure it is still handled properly by the variant about to get merged.

	@Test 
	public void updatingCollectionInEntityWithoutId() {

		CollectionOwner owner = new CollectionOwner(null, "owner", singletonList(new IdLessIntermediate("intermediate", singletonList(new Element(null, "Lovecraft")))));
		CollectionOwner saved = template.save(owner);

		Long id = saved.id;
		assertThat(id).isNotNull();

		Element savedLovecraft = saved.list.get(0).list.get(0);
		assertThat(savedLovecraft.id).isNotNull();

		CollectionOwner changedOwner = new CollectionOwner(id, "owner", singletonList(new IdLessIntermediate("intermediate", asList(savedLovecraft, new Element(null, "Sakurai")))));

		CollectionOwner savedAgain = template.save(changedOwner);

		SoftAssertions softly = new SoftAssertions();

		softly.assertThat(savedAgain.id).isEqualTo(id);
		softly.assertThat(savedAgain.list.get(0).list.get(0)).isEqualTo(savedLovecraft);
		softly.assertThat(savedAgain.list.get(0).list.get(1).id).describedAs("Element has id set and that element is part of the aggregate").isNotNull();

		softly.assertAll();
	}

Issue Links:

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.