I have a following entity declared in my code:
#NoArgsConstructor
#Cacheable(false)
#Data
#Entity
#SqlResultSetMappings(
#SqlResultSetMapping(name = "KpiProfitabilitySaleResultSetMapping",
classes = {
#ConstructorResult(
targetClass= KpiProfitabilitySale.class,
columns= {
#ColumnResult(name = "client_id", type = Long.class),
#ColumnResult(name = "period_date", type = Date.class),
#ColumnResult(name = "billing_value", type = Double.class)
}
)
}
)
)
#NamedStoredProcedureQueries({
#NamedStoredProcedureQuery(name = "KPI.ProfitabilitySale",
procedureName = "cmf_kpi_employee_profitability_sale",
parameters = {
#StoredProcedureParameter(mode = ParameterMode.IN, name = "date_start", type = Date.class),
#StoredProcedureParameter(mode = ParameterMode.IN, name = "date_end", type = Date.class)
},
resultSetMappings = {"KpiProfitabilitySaleResultSetMapping"}
)
})
#AllArgsConstructor
public class KpiProfitabilitySale implements Serializable {
#Id
private Long clientId;
private String clientName;
#Temporal(TemporalType.DATE)
private Date periodDate;
private Double billingValue;
}
and method in stateless bean which executes a stored procedure
StoredProcedureQuery query = getEM().createNamedStoredProcedureQuery("KPI.ProfitabilitySale")
.setParameter("date_start", period.getBeginDate(), TemporalType.DATE)
.setParameter("date_end", period.getEndDate(), TemporalType.DATE)
.getResultList();
This one stoped working after upgrade from EclipseLink 2.6 to 2.7 . Code throws following exception:
Caused by: java.sql.SQLFeatureNotSupportedException: Method org.postgresql.jdbc.PgCallableStatement.setDate(String,Date) not supported yet.
at org.postgresql.Driver.notImplemented(Driver.java:731)
at org.postgresql.jdbc.PgCallableStatement.setDate(PgCallableStatement.java:738)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.postgresql.ds.PGPooledConnection$StatementHandler.invoke(PGPooledConnection.java:441)
Any ideas how to solve this ?
Related
I am developing Spring + Spring Data JPA + JPQL Hibernate Criteria scenario in my project. In this project I developed the following test case and when I'm executing it, I see the following error. I know its a small mistake but dont know what it is. Please guide.
java.lang.IllegalArgumentException: Selection items in a multi-select cannot contain compound tuple-valued elements
at org.hibernate.jpa.criteria.CriteriaBuilderImpl.checkMultiselect(CriteriaBuilderImpl.java:158)
at org.hibernate.jpa.criteria.CriteriaBuilderImpl.tuple(CriteriaBuilderImpl.java:185)
at org.hibernate.jpa.criteria.CriteriaQueryImpl.multiselect(CriteriaQueryImpl.java:110)
at org.hibernate.jpa.criteria.CriteriaQueryImpl.multiselect(CriteriaQueryImpl.java:101)
at com.scheduler.test.ProductTest.testCriteriaQuerysMultiselect(ProductTest.java:110)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
ProductCriteriaJPQLTest.java
#RunWith(SpringJUnit4ClassRunner.class)
#ContextConfiguration(locations = "classpath:application-context.xml")
#Transactional
#Rollback
public class ProductCriteriaJPQLTest {
#PersistenceContext
private EntityManager em;
private CriteriaBuilder cb;
CriteriaQuery<Object> criteriaQuery;
#Before
public void before() {
cb = em.getCriteriaBuilder();
criteriaQuery = cb.createQuery();
}
// CriteriaQuery's multiselect
#Test
public void testCriteriaQuerysMultiselect(){
CriteriaQuery<Tuple> q = cb.createTupleQuery();
Root<Product> c = q.from(Product.class);
q.multiselect(cb.tuple(c.get("productCode"), c.get("productVendor"), c.get("productline").get("productLine")));
List<Tuple> results = em.createQuery(q).getResultList();
for (Tuple t : results) {
System.out.println("ProductCode: " + t.get(0) + ", ProductName: " + t.get(1)+", ProductVendor : "+t.get(2));
}
}
}
Product.java
#Entity
#Table(name="products")
#NamedQuery(name="Product.findAll", query="SELECT p FROM Product p")
public class Product implements Serializable {
private static final long serialVersionUID = 1L;
#Id
// #GeneratedValue(strategy=GenerationType.AUTO)
private String productCode;
private double buyPrice;
private double msrp;
#Lob
private String productDescription;
private String productName;
private String productScale;
private String productVendor;
private short quantityInStock;
//bi-directional many-to-one association to Orderdetail
#OneToMany(mappedBy="product")
private List<Orderdetail> orderdetails;
//bi-directional many-to-one association to Productline
#ManyToOne
#JoinColumn(name="productLine")
private Productline productline;
// Assume the setters and getters are present
}
}
Please let me know if you need any other info.
EDIT-1 : As suggested, I tried below but still its not working
#Test
public void testCriteriaQuerysMultiselect(){
CriteriaQuery<Tuple> query = cb.createTupleQuery();
Root<Product> product = query.from(Product.class);
query.multiselect(cb.tuple(product.get("productCode")));
List<Tuple> results = em.createQuery(query).getResultList();
for (Tuple t : results) {
System.out.println("ProductCode: " + t.get(0) + ", ProductName: " + t.get(1)+", ProductVendor : "+t.get(2));
}
}
This is an approach by the use of Path:
CriteriaQuery<Tuple> criteria = builder.createTupleQuery();
Root<Person> personRoot = criteria.from( Person.class );
Path<Long> idPath = personRoot.get( Person_.id );
Path<Integer> agePath = personRoot.get( Person_.age );
criteria.multiselect( idPath, agePath );
criteria.where( builder.equal( personRoot.get( Person_.eyeColor ), "brown" ) );
List<Tuple> tuples = em.createQuery( criteria ).getResultList();
for ( Tuple tuple : valueArray ) {
assert tuple.get( 0 ) == tuple.get( idPath );
assert tuple.get( 1 ) == tuple.get( agePath );
...
}
References: Example taken from JBoss Hibernate Manual. Chapter 9, Criteria Queries
I have two tables: ProductUsage and Learner. ProductUsage have field Learner, Learner has fields id and guid. now I need to create a query to pull out all productUsage whose learner guid is in specified user ids:
SQL:
select * from product_usage
inner join learner
on product_usage.learner_id = learner.id
where
learner.guid in ("1234", "2345")
domain class:
#Data
#NoArgsConstructor
#Entity
#Table(name = "core_product_usage_increments")
public class ProductUsage {
#Id
#GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
#ManyToOne
#JoinColumn(name = "learner_id", nullable = false)
private Learner learner;
#ManyToOne
#JoinColumn(name = "learning_language_id", nullable = false)
private Language language;
}
#Data
#NoArgsConstructor
#Entity
#Table(name = "learners")
public class Learner {
#Id
#GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
#Column(name = "user_guid", nullable = false, unique = true)
private String guid;
#Column(name = "first_name")
private String firstName;
#Column(name = "last_name")
private String lastName;
}
and repository class:
#Repository
public interface ProductUsageRepository extends CrudRepository<ProductUsage, Integer> {
#Query("SELECT p FROM ProductUsage p WHERE p.learnerGuid = :learnerGuid")
List<ProductUsage> findByLearnerGuid(String learnerGuid);
}
client class that call the repository
#Component
public class MyClient {
#Autowired
private ProductUsageRepository repository;
public MyClient(ProductUsageRepository repository) {
this.repository = repository;
}
public List<ProductUsage> getProductUageByLeanrerGuid(String learnerGuid) {
return repository.findByLearnerGuid(learnerGuid);
}
}
and my test:
#Test
public void testClient() throws Exception {
MyClient client = new MyClient(repository);
List<ProductUsage> results = client.getProductUageByLeanrerGuid("1234");
assertNotNull(result);
}
and it failed:
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: learnerGuid of: com.acme.domain.spectrum.ProductUsage [SELECT p FROM com.acme.domain.spectrum.ProductUsage p WHERE p.learnerGuid = :learnerGuid]
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1364)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1300)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:294)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
it cannot recognize the 'learnerGuid' field in ProductUsage, but that's actually defined in Learner class. how can I perform the query that join multiple tables?
ProductUsage has no learnerGuid property, only learner. Try
#Query("SELECT p FROM ProductUsage p WHERE p.learner.guid = :learnerGuid")
If that doesn't work, I have another tip:
#Query("SELECT p FROM ProductUsage p join p.Learner l WHERE l.guid = :learnerGuid")
You do not have use a #query like you did
#Query("SELECT p FROM ProductUsage p WHERE p.learnerGuid = :learnerGuid")
List<ProductUsage> findByLearnerGuid(String learnerGuid);
Spring JPA framework can build the query by method name itself. Try this
List<ProductUsage> findByLearnerGuid(String learnerGuid);
or
List<ProductUsage> findByLearner_guid(String learnerGuid);
as you have a relation to Learner from ProductUsage the findBy method can traverse through the related tables and their fields. "_" gives the framework a clear indication that query by joining the Learner table where guid =?
Otherwise the framework tries below two combinations:
where learnerGuid=?
join learner where guid=?
I'm facing a strange problem porting a working application from JEE6 (glassfish 3/eclipselink 2.5.1) to JEE7 (glassfish 4/eclipselink 2.5.2).
I've these entities (getter/setter are project Lombok annotations):
#Entity
#Table(name = "languages")
public class Language {
#Getter
#Setter
#NotNull
#Column(name = "code")
private String code;
#Getter
#Setter
#ManyToOne(cascade = CascadeType.ALL)
#JoinColumn(name = "translation_id")
private Translation translations = new Translation();
}
#Entity
#Table(name = "translations")
public class Translation {
#ElementCollection
#MapKeyColumn(name="locale")
#Column(name="description")
#CollectionTable(name="translations_values")
private Map<String, String> strings = new HashMap<>();
public Translation() {
}
public Translation(Map<String, String> map) {
this.strings = map;
}
public void setString(String locale, String text) {
strings.put(locale, text);
}
public String getString(String locale) {
String returnValue = strings.get(locale);
return (returnValue != null ? returnValue : null);
}
}
If I run this JPQL query, it works:
select o from Language o join o.translations t join t.strings s where key(s) = 'it' and value(s) = 'Italiano'
If I run the same query adding an order by clause on elementcollection, it doesn't work:
select o from Language o join o.translations t join t.strings s where key(s) = 'it' and value(s) = 'Italiano' order by value(s)
The result is:
Local Exception Stack:
Exception [EclipseLink-6168] (Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5): org.eclipse.persistence.exceptions.QueryException
Exception Description: Query failed to prepare, unexpected error occurred: [java.lang.NullPointerException].
Internal Exception: java.lang.NullPointerException
Query: ReadAllQuery(referenceClass=Language jpql="select o from Language o join o.translations t join t.strings s where key(s) = 'it' and value(s) = 'Italiano' order by value(s)")
at org.eclipse.persistence.exceptions.QueryException.prepareFailed(QueryException.java:1589)
at org.eclipse.persistence.queries.DatabaseQuery.checkPrepare(DatabaseQuery.java:680)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.checkPrepare(ObjectLevelReadQuery.java:901)
at org.eclipse.persistence.queries.DatabaseQuery.checkPrepare(DatabaseQuery.java:613)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:194)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:116)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:102)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:86)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1603)
Caused by: java.lang.NullPointerException
at org.eclipse.persistence.mappings.ForeignReferenceMapping.getOrderByNormalizedExpressions(ForeignReferenceMapping.java:2456)
at org.eclipse.persistence.internal.expressions.SQLSelectStatement.normalizeOrderBy(SQLSelectStatement.java:1614)
at org.eclipse.persistence.internal.expressions.SQLSelectStatement.normalize(SQLSelectStatement.java:1403)
at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.buildNormalSelectStatement(ExpressionQueryMechanism.java:549)
at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.prepareSelectAllRows(ExpressionQueryMechanism.java:1720)
at org.eclipse.persistence.queries.ReadAllQuery.prepareSelectAllRows(ReadAllQuery.java:813)
at org.eclipse.persistence.queries.ReadAllQuery.prepare(ReadAllQuery.java:744)
at org.eclipse.persistence.queries.DatabaseQuery.checkPrepare(DatabaseQuery.java:661)
... 9 more
My application on glassfish 3 / eclipselink 2.5.1 works fine on the JPQL query above.
Is there any workaround ?
Many thanks in advance
I am using eclipseLink and have the under mentioned query.
Query q = entityManager.createQuery("SELECT t FROM "
+ clazz.getName() + " t WHERE t.id = :id");
q.setParameter("id", id);
matchedEntity = (T) q.getSingleResult();
However only sometimes I get the following error
java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager:
Exception Description: Problem compiling [SELECT t FROM com.mt.igg.entities.CitizenRequest t WHERE t.id = :id].
[57, 61] The state field path 't.id' cannot be resolved to a valid type.
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1585)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240)
at com.sun.proxy.$Proxy94.createQuery(Unknown Source)
The code works sometimes, and only sometimes I get the above error.
The case of the fields in query is same as that in the entity.
I am using tomcat server to deploy the project
Edit: The CitizenRequest entity:
#Entity
#Table(name = "CITIZEN_REQUEST")
#Multitenant
#TenantDiscriminatorColumn(name = "TENANT_ID", contextProperty = PersistenceUnitProperties.MULTITENANT_PROPERTY_DEFAULT)
public class CitizenRequest implements Serializable {
// id of CitizenRequest
#Id
#GeneratedValue(strategy = GenerationType.IDENTITY)
#Column(name = "ID")
private Integer id;
// Title of CitizenRequest
#Column(name = "TITLE_ID")
#NotNull
private Integer title;
I have a problem with binding the entity through the additional table with a composite key:
class Product
#Entity
public class Product implements Serializable {
#Id
#Column(name = "product_id")
private Integer productId;
...
#OneToMany(cascade = CascadeType.ALL, mappedBy = "product", fetch = FetchType.LAZY)
private Collection<ProductProperty> productPropertyCollection;
...
get/set
...
public void addProductProperty(ProductProperty productProperty) {
productPropertyCollection.add(productProperty);
if (productProperty.getProduct()!=this) {
productProperty.setProduct(this);
}
}
}
class Property
#Entity
public class Property implements Serializable {
#Id
#Column(name = "property_id")
private Integer id;
...
#OneToMany(cascade = CascadeType.ALL, mappedBy = "property", fetch = FetchType.LAZY)
private Collection<ProductProperty> productPropertyCollection;
...
get/set
...
public void addProductProperty(ProductProperty productProperty) {
productPropertyCollection.add(productProperty);
if (productProperty.getProperty()!=this) {
productProperty.setProperty(this);
}
}
}
class ProductProperty
#Entity
#IdClass(ProductPropertyPK.class)
public class ProductProperty implements Serializable {
#Id
#ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
#JoinColumn(name = "property_id", referencedColumnName = "property_id")
private Property property;
#Id
#ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
#JoinColumn(name = "product_id", referencedColumnName = "product_id")
private Product product;
public void setProperty(Property property) {
this.property = property;
if (!property.getProductPropertyCollection().contains(this)) {
property.getProductPropertyCollection().add(this);
}
}
public void setProduct(Product product) {
this.product = product;
if (!product.getProductPropertyCollection().contains(this)) {
product.getProductPropertyCollection().add(this);
}
}
}
Using entities:
for (Offer o : offers.getOffers()) {
jpa.product.Product product = cacheProduct_indexIdx.get(o.getProductsId());
for (Property p : o.getProperties()) {
PropertyTypeNamePK propertyTypeNamePK = new PropertyTypeNamePK(p.getType(), p.getName());
if (!cacheProperty_indexTypeNamePK.containsKey(propertyTypeNamePK)) {
jpa.product.Property property = new jpa.product.Property();
property.setType(p.getType());
property.setName(p.getName());
propertyFacade.create(property);
jpa.product.ProductProperty productProperty = new ProductProperty();
product.addProductProperty(productProperty);
property.addProductProperty(productProperty);
cacheProperty_indexTypeNamePK.put(propertyTypeNamePK, property);
} else {
jpa.product.Property property = cacheProperty_indexTypeNamePK.get(propertyTypeNamePK);
jpa.product.ProductProperty productProperty = null;
for (jpa.product.ProductProperty pp : product.getProductPropertyCollection()) {
if (property.equals(pp.getProperty())) {
productProperty = pp;
break;
}
}
if (productProperty==null) {
productProperty = new ProductProperty();
product.addProductProperty(productProperty);
property.addProductProperty(productProperty);
}
}
}
}
It works fine for 1, 10, 100 products, but somewhere there is an error, because for 1000 and more products throws error:
Caused by: java.lang.StackOverflowError
at java.text.DecimalFormat.subformat(DecimalFormat.java:903)
at java.text.DecimalFormat.format(DecimalFormat.java:692)
at java.text.DecimalFormat.format(DecimalFormat.java:626)
at java.text.SimpleDateFormat.zeroPaddingNumber(SimpleDateFormat.java:1335)
at java.text.SimpleDateFormat.subFormat(SimpleDateFormat.java:1274)
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:978)
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:948)
at java.text.DateFormat.format(DateFormat.java:336)
at com.sun.enterprise.server.logging.UniformLogFormatter.uniformLogFormat(UniformLogFormatter.java:265)
at com.sun.enterprise.server.logging.UniformLogFormatter.format(UniformLogFormatter.java:162)
at java.util.logging.StreamHandler.publish(StreamHandler.java:196)
at java.util.logging.ConsoleHandler.publish(ConsoleHandler.java:105)
at java.util.logging.Logger.log(Logger.java:565)
at org.eclipse.persistence.logging.JavaLog.internalLog(JavaLog.java:290)
at org.eclipse.persistence.logging.JavaLog.log(JavaLog.java:261)
at org.eclipse.persistence.internal.sessions.AbstractSession.log(AbstractSession.java:3215)
at org.eclipse.persistence.internal.sessions.AbstractSession.log(AbstractSession.java:4333)
at org.eclipse.persistence.internal.sessions.AbstractSession.log(AbstractSession.java:4305)
at org.eclipse.persistence.internal.sessions.AbstractSession.log(AbstractSession.java:4281)
at org.eclipse.persistence.internal.sessions.AbstractSession.log(AbstractSession.java:4203)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.logDebugMessage(UnitOfWorkImpl.java:5559)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNotRegisteredNewObjectForPersist(UnitOfWorkImpl.java:4250)
at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.registerNotRegisteredNewObjectForPersist(RepeatableWriteUnitOfWork.java:511)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.discoverAndPersistUnregisteredNewObjects(UnitOfWorkImpl.java:4160)
at org.eclipse.persistence.mappings.CollectionMapping.cascadeDiscoverAndPersistUnregisteredNewObjects(CollectionMapping.java:426)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.cascadeDiscoverAndPersistUnregisteredNewObjects(ObjectBuilder.java:1964)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.discoverAndPersistUnregisteredNewObjects(UnitOfWorkImpl.java:4178)
at org.eclipse.persistence.mappings.ObjectReferenceMapping.cascadeDiscoverAndPersistUnregisteredNewObjects(ObjectReferenceMapping.java:938)
at org.eclipse.persistence.mappings.ObjectReferenceMapping.cascadeDiscoverAndPersistUnregisteredNewObjects(ObjectReferenceMapping.java:916)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.cascadeDiscoverAndPersistUnregisteredNewObjects(ObjectBuilder.java:1964)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.discoverAndPersistUnregisteredNewObjects(UnitOfWorkImpl.java:4178)
at org.eclipse.persistence.mappings.CollectionMapping.cascadeDiscoverAndPersistUnregisteredNewObjects(CollectionMapping.java:426)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.cascadeDiscoverAndPersistUnregisteredNewObjects(ObjectBuilder.java:1964)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.discoverAndPersistUnregisteredNewObjects(UnitOfWorkImpl.java:4178)
at org.eclipse.persistence.mappings.ObjectReferenceMapping.cascadeDiscoverAndPersistUnregisteredNewObjects(ObjectReferenceMapping.java:938)
at org.eclipse.persistence.mappings.ObjectReferenceMapping.cascadeDiscoverAndPersistUnregisteredNewObjects(ObjectReferenceMapping.java:916)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.cascadeDiscoverAndPersistUnregisteredNewObjects(ObjectBuilder.java:1964)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.discoverAndPersistUnregisteredNewObjects(UnitOfWorkImpl.java:4178)
at org.eclipse.persistence.mappings.CollectionMapping.cascadeDiscoverAndPersistUnregisteredNewObjects(CollectionMapping.java:426)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.cascadeDiscoverAndPersistUnregisteredNewObjects(ObjectBuilder.java:1964)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.discoverAndPersistUnregisteredNewObjects(UnitOfWorkImpl.java:4178)
at org.eclipse.persistence.mappings.ObjectReferenceMapping.cascadeDiscoverAndPersistUnregisteredNewObjects(ObjectReferenceMapping.java:938)
at org.eclipse.persistence.mappings.ObjectReferenceMapping.cascadeDiscoverAndPersistUnregisteredNewObjects(ObjectReferenceMapping.java:916)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.cascadeDiscoverAndPersistUnregisteredNewObjects(ObjectBuilder.java:1964)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.discoverAndPersistUnregisteredNewObjects(UnitOfWorkImpl.java:4178)
at org.eclipse.persistence.mappings.CollectionMapping.cascadeDiscoverAndPersistUnregisteredNewObjects(CollectionMapping.java:426)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.cascadeDiscoverAndPersistUnregisteredNewObjects(ObjectBuilder.java:1964)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.discoverAndPersistUnregisteredNewObjects(UnitOfWorkImpl.java:4178)