rashmi created OPENJPA-2577:
-------------------------------
Summary: In what case [code=17041, state=99999] SQLException
returns during lazy fetching?
Key: OPENJPA-2577
URL: https://issues.apache.org/jira/browse/OPENJPA-2577
Project: OpenJPA
Issue Type: Question
Components: jpa
Affects Versions: 2.1.2
Environment: JSF application with EJB 3 and open JPA, running on
websphere 8.5
Reporter: rashmi
Priority: Blocker
Hi,
In production environment once we got below exception. we are not able to
reproduce the problem. That application is stopped using in production due to
few issues, out of them one is this.
I tried to replicate this in many ways on production data dump. but i am not
able to replicate.
To recreate data to replicate, i want to know when this exception is thrown by
JPA framework?
Exception is:
[2014-10-28 13:04:15:209 CET] 0000003c BusinessExcep E CNTR0020E: EJB threw
an unexpected (non-declared) exception during invocation of method
"calculateCompensations" on bean
"BeanId(me-std-ear#me-std-web.war#MEFacadeBean, null)". Exception data:
<openjpa-2.1.2-SNAPSHOT-r422266:1436521 nonfatal general error>
org.apache.openjpa.util.GeneralException:
org.apache.openjpa.lib.jdbc.ReportingSQLException: IN- eller OUT-parameter
saknas i index:: 1 {prepstmnt 1296099302 SELECT t0.EXTERNAL_ID,
t0.LAST_UPDATED, t0.NAME, t0.UOM FROM ITEM t0 WHERE t0.ITEM_ID = ? [params=?]}
[code=17041, state=99999]
at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1008)
at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:907)
at
com.ibm.ws.persistence.kernel.WsJpaBrokerImpl.find(WsJpaBrokerImpl.java:199)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.find(JDBCStoreManager.java:1010)
at
org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.load(RelationFieldStrategy.java:781)
at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:934)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:702)
at
com.ibm.ws.persistence.jdbc.kernel.WsJpaJDBCStoreManager.load(WsJpaJDBCStoreManager.java:130)
at
org.apache.openjpa.kernel.DelegatingStoreManager.load(DelegatingStoreManager.java:117)
at
org.apache.openjpa.datacache.DataCacheStoreManager.load(DataCacheStoreManager.java:442)
at
org.apache.openjpa.kernel.DelegatingStoreManager.load(DelegatingStoreManager.java:117)
at
org.apache.openjpa.kernel.ROPStoreManager.load(ROPStoreManager.java:78)
at
org.apache.openjpa.kernel.StateManagerImpl.loadFields(StateManagerImpl.java:3061)
at
org.apache.openjpa.kernel.StateManagerImpl.loadField(StateManagerImpl.java:3136)
at
org.apache.openjpa.kernel.StateManagerImpl.beforeAccessField(StateManagerImpl.java:1606)
at
org.apache.openjpa.kernel.StateManagerImpl.accessingField(StateManagerImpl.java:1591)
at se.ica.me.entity.OfferPartItem.pcGetitem(OfferPartItem.java)
at se.ica.me.entity.OfferPartItem.getItem(OfferPartItem.java:59)
at se.ica.me.dao.SaleDAO.getItemsFrom(SaleDAO.java:100)
at se.ica.me.dao.SaleDAO.getClusterTotalSaleForItem(SaleDAO.java:50)
SaleDao.java Code is as below:
private Set<Item> getItemsFrom(List<OfferPartItem> offerPartItems) {
Set<Item> items = new HashSet<Item>();
for(OfferPartItem offerPartItem : offerPartItems) {
items.add(offerPartItem.getItem());
}
return items;
}
OfferPartItem.java entity code:
@Entity
@Table(name="OFFER_PART_ITEM")
public class OfferPartItem implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = SEQUENCE, generator =
"OFFER_PART_ITEM_SEQ_GNR")
@SequenceGenerator(name = "OFFER_PART_ITEM_SEQ_GNR", sequenceName =
"OFFER_PART_ITEM_SEQ")
@Column(name="OFFER_PART_ITEM_ID")
private Long offerPartItemId;
@Column(name="COST_PRICE")
private BigDecimal costPrice;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ITEM_ID")
private Item item;
public Item getItem() {
return this.item;
}
Item entity code:
@Entity
@Table(name="ITEM")
@NamedQueries({
@NamedQuery(name = "Item.findByExternalId", query = "SELECT i
FROM Item i where i.externalId = :externalId")
})
public class Item implements Serializable {
private static final long serialVersionUID = 1L;
public static final String NQ_FIND_BY_EXTERNAL_ID =
"Item.findByExternalId";
@Id
@GeneratedValue(strategy=SEQUENCE, generator = "ITEM_SEQ_GNR")
@SequenceGenerator(name = "ITEM_SEQ_GNR", sequenceName = "ITEM_SEQ")
@Column(name="ITEM_ID")
private Long itemId;
/**
* ICA StoreItem-identifier
*/
@Column(name="EXTERNAL_ID", length=20)
private String externalId;
@Column(name="NAME", length=20)
private String name;
...
...
}
Table structures
Offer_Part_Item
OFFER_PART_ITEM_ID N NUMBER (Primary key)
ITEM_ID Y NUMBER (Foreigh key of ITEM table)
OFFER_PART_ID Y NUMBER
COST_PRICE Y NUMBER
SALE_ID Y NUMBER
Your early help is very much appreciated.
Regards,
Rashmi
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)