Request description
Bonjour,
Dans le cas de la modification en liste d’un objet C (table d’association) permettant de lier un objet A à un objet B nous avons remarqué que les valeurs des attributs de l’objet parent A étaient perdus à partir de l’ajout d’une seconde ligne et devenait incohérent à partir de l’ajout de la 3e.
Pour donner un peu de contexte, dans notre application on est dans un cas similaire aux liens entre DemoClient, DemoContact et DemoOrder. Quand on crée un DemoContact on a besoin pour une règle de gestion de connaitre le client qui est sur la commande associée au DemoContact qu’on est entrain de créer :
Steps to reproduce
A partir du module de Demo :
-
Importer le dataset du module de Demo.
-
Au niveau du code de DemoClient.java ajouter le code suivant :
@Override
public void initRefSelect(ObjectDB parent) {
// AppLog.warning("DEBUG / parent: " + parent, null, getGrant());
if (!Tool.isEmpty(parent) && "DemoContact".equals(parent.getName())) {
String orderClientId = parent.getFieldValue("demoOrdCliId");
AppLog.warning("DEBUG / orderClientId: " + orderClientId, null, getGrant());
}
}
- Créer deux commandes. Commande 1 client 1 et commande 2 client 2.
- Au niveau de la commande n°2, créer un contact en prenant client 2.
- Ouvrir la commande n°1. Créer un contact en passant par “Modifier la liste”.
- Cliquer sur “Ajouter une ligne” puis sur la loupe au niveau de l’attribut “Code client” :
- Dans les logs on peut voir qu’on a orderCLientId qui vaut 1 ce qui correspond bien au row_id de notre client sur la commande 1 où on se trouve.
- Fermer la pop-up de sélection d’un client :
- Cliquer sur “Ajouter une ligne” puis sur la loupe au niveau de l’attribut “Code client” de la 2nde ligne :
- Dans les logs on peut voir qu’on a orderCLientId qui vaut “chaine de caractère vide”. On a perdu l’info sur le client au niveau de la commande où on se trouve :
- Fermer la pop-up de sélection d’un client.
- Cliquer sur “Ajouter une ligne” puis sur la loupe au niveau de l’attribut “Code client” de la 3e ligne :
- Dans les logs on peut voir qu’on a orderCLientId qui vaut 2. Ca ne correspond pas au row_id du client sur la commande n°1, c’est celui de la commande n°2 :
Technical information
Instance /health
[Platform]
Status=OK
Version=6.2.12
BuiltOn=2025-06-27 18:57
Git=6.2/52d763856412a8eb1564748d6d391f60e1b9c921
Encoding=UTF-8
EndpointIP=
EndpointURL=
TimeZone=UTC
SystemDate=2025-07-17 14:09:55
[Application]
ApplicationVersion=1.0.0
ContextPath=
ContextURL=
ActiveSessions=1
TotalUsers=7
EnabledUsers=5
LastLoginDate=2025-07-17 13:24:46
[Server]
ServerInfo=Apache Tomcat/9.0.106
ServerType=WEB
ServerDevMode=false
ServerCompiler=true
ServerActiveSessions=1
ServerSessionTimeout=30
CronStarted=true
[OS]
Name=Linux
Architecture=amd64
Version=6.6.87.2-microsoft-standard-WSL2
DockerImageName=almalinux9
SystemEncoding=UTF-8
[JavaVM]
Version=21.0.7
Vendor=Eclipse Adoptium
VMName=OpenJDK 64-Bit Server VM
VMVersion=21.0.7+6-LTS
ScriptEngine=rhino
ScriptEngineVersion=Rhino 1.7.13 2020 09 02
HeapFree=157349
HeapSize=410624
HeapMaxSize=487424
TotalFreeSize=234149
[Cache]
ObjectCache=279
ObjectCacheMax=10000
ObjectCacheRatio=2
ProcessCache=1
ProcessCacheMax=10000
ProcessCacheRatio=0
APIGrantCache=0
APIGrantCacheMax=1000
APIGrantRatio=0
[Database]
Vendor=3
VendorName=postgresql
ProductName=PostgreSQL
ProductVersion=14.18 (Debian 14.18-1.pgdg120+1)
DriverName=PostgreSQL JDBC Driver
DriverVersion=42.7.7
DBDate=2025-07-17 14:09:55
DBDateOffset=0
DBPatchLevel=6;P02;070eeaa53c5b6fd9eacbce674cd833d7;12
UsingBLOBs=true
[Healthcheck]
Date=2025-07-17 14:09:55
ElapsedTime=633