[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] Unmanaged references
|
In our project we are working with data transfer objects. In boundary methods
a conversion from DTO to respective entity takes place.
public void updateCustomer(CustomerUpdateDTO dto)
{
// Find and attach customer entity
Customer customer = crudService.findCustomerByCode(dto.getCode());
customer.setName(dto.getName());
// Rest omitted
// The customer DTO references a list DTO for the customer's country
// Of course the respective country entity exists in the database.
customer.setCountry(new Country(dto.getCountry().getCode()));
}
When flushing the entity manager tries to persist the "non-existing"
country. That's interesting because the association isn't annotated with a
cascade option!
Anyway, the operation fails:
com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Column
'name' cannot be null
Error Code: 1048
Call: INSERT INTO country_tab (code, name) VALUES (?, ?)
The property "eclipselink.validate-existence" seems to work only when
persisting new objects.
James Sutherland wrote:
>
> Although not generally a good idea, JPA does allow you to persist an
> object with a reference to a non-managed existing object. Is the object
> existing? What error do you get?
>
> In general if you use merge() instead of persist() it should ensure the
> correct managed object is referenced. You could also manually lookup the
> correct managed object to be referenced.
>
> You could try the property "eclipselink.validate-existence", it may change
> the behavior.
>
>
>
> mgsoft wrote:
>>
>> Hi,
>>
>> we are just in transition from Hibernate to EclipseLink. While running
>> the first tests we saw a difference between Hibernate and EclipseLink:
>>
>> If I want to persist or update an entity that references an unmanaged
>> object I get an error message that tells me that persisting the
>> referenced unmanaged entity failed. Of course I don't want to cascade
>> e.g. the persist of the entity reference that even hasn't an apporpriate
>> annotation (Cascade.ALL or Cascade.Persist).
>> In Hibernate it works without a problem. Do I have to attach (e.g by
>> using find) the reference always before persisting an entity or is there
>> a global setting to change this behaviour?
>>
>> Thanks in advance!
>>
>>
>>
>
>
--
View this message in context: http://old.nabble.com/Unmanaged-references-tp31039202p31086140.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.