我是JPA/Hibernate的新手。目前使用EJB3,Hibernate/JPA。我有一個inheritacnce結構如下..JPA級聯刪除
@Entity
@DiscriminatorColumn(name = "form_type")
@Inheritance(strategy = InheritanceType.JOINED)
@GenericGenerator(name = "FORMS_SEQ", strategy = "sequence-identity", parameters = @Parameter(name = "sequence", value = "FORMS_SEQ"))
@Table(name = "Forms")
public abstract class Form{
//code for Form
}
@Entity
@Table(name = "CREDIT_CARDS")
@PrimaryKeyJoinColumn(name="CREDIT_CARD_ID")
public class CreditCardForm extends Form {
//Code for CreditCards.
}
當我添加一行保存行正確插入到父和子表。但是,當我嘗試刪除時出現錯誤 -
10:19:35,465錯誤[TxPolicy] javax.ejb.EJBTransactionRolledbackException:刪除分離的實例com.data.entities.form.financial.CreditCard#159?
我正在使用一個簡單的for循環來確定繼承類型--CreditCard或DebitCard,然後調用entityManager.remove(entity)。我究竟做錯了什麼?
代碼刪除..
for(Form content: contents){
if(content.getType()==Type.CREDIT_CARD){
creditCardService.delete((CreditCard)content);
}
感謝。
WM
好的,得到了答案。 JPA上下文需要在實際刪除之前加載。快速修復是調用getEntityManager()。getReference(),然後調用delete/remove。 謝謝大家閱讀主題。 – 2010-05-05 18:39:14