I have two process variable that is CDT type.
I need to if any of the process variable is null then related to that process variable entity data not executed.
Like this:
= {
if( a!isnotnullorempty(pv!dependencies),
null,
a!entityData(
entity: cons!DSE_COMMUNITIES,
data: pv!communityAllocation )
),
entity: cons!DSE_DEPENDENCIES,
data: pv!dependencies ) )}
But it gives error:
An error occurred while trying to write to the data store [Tables]. No values have been written. Details: org.hibernate.PropertyValueException: not-null property references a null or transient value DependenciesDT21866.projectid (APNX-1-4208-004)
Please, anyone suggest........
Discussion posts and replies are publicly visible
By looking at your code it looks like you have added wrong condition. iT should be like if that variable is null then don't do anything else write to DB like below. Also in both if condition you are checking same variable but writing to different entity. Please try the below code and see if it is working.
if( a!isnullorempty(pv!communityAllocation),
if( a!isnullorempty(pv!dependencies),
Thank you for reply.
I tried your code but It gives same error as previous.
Error:
An error occurred while trying to write to the data store [Tables]. No values have been written. Details: org.hibernate.PropertyValueException: not-null property references a null or transient value : DependenciesDT21866.projectid (APNX-1-4208-004)
In the database table you're working with, there's a specific field that has been configured to not allow null values. Please ensure that your primary key (PK) is set to auto-increment. This step will address the problem if the PK is null. Otherwise, review the table's structure to identify the specific column responsible for this issue.
To my understanding, the "write to multiple data store entity" smart service will automatically manage any null values. Therefore, it isn't necessary to individually check each process variable for null before writing them to their respective entities.
I have already auto incremented PK column in my database table
If I don't put any condition for checking null then it still gives same error:
An error occurred while trying to write to the data store [Tables]. No values have been written. Details: org.hibernate.PropertyValueException: not-null property references a null or transient value : CommunitiesDT21864.projectid (APNX-1-4208-004)
If you don't have anything to write for a particular Entity entry, you will need to set that list item to EMPTY SET ( {} ), because NULL() actually carries a value and will cause the node to error.
This makes some assumptions into the validity of your null checks. The second null check (for pv!dependencies) seemed backwards so I switched to the opposite rule (since you wouldn't be writing pv!dependencies if it's actually empty).
{ if( a!isNotNullOrEmpty(pv!dependencies), {}, /* null, */ a!entityData( entity: cons!DSE_COMMUNITIES, data: pv!communityAllocation ) ), if( a!isNullOrEmpty(pv!dependencies), /* note, switching the null check rule used here */ {}, /* null, */ a!entityData( entity: cons!DSE_DEPENDENCIES, data: pv!dependencies ) ) }
Thanks for reply.
By putting empty set with your code, it still gives same error as above..
Care to show the values of the PVs?
You would need to ensure there's actually a value in pv!communityAllocation, since neither your original code (nor neither my revised code above) actually checks that. Without a bit more detail provided (like the values of the PVs in your errored process instance, as already requested), we're kinda guessing in the dark here.