我真的希望能够从具有复合主键的单个表中删除记录。这是我的复合键代码(省略了getters / setters):
@Embeddable
public class MISExceptionStoreUploadControlPK implements Serializable {
/**
* Serializable class - generated UID
*/
private static final long serialVersionUID = -2589068978210044521L;
@Column(name="STORE_NO", nullable=false)
private String storeNo;
@Column(name="EXTRACT_TIME", nullable=false)
private String extractTime;
这是我的实体代码(省略了getters / setters):
@Entity
@Table(name="SDSUSER_OWNER.MIS_EXCEPTION_STORE_UPLD_CNTRL")
public class MISExceptionStoreUploadControl implements Serializable {
/**
* Serializable class - generated UID
*/
private static final long serialVersionUID = 545018012527944915L;
//@Id
@EmbeddedId
private MISExceptionStoreUploadControlPK misExceptionStoreUploadControlPK;
@Column(name="UNDER_EXTRACT_DAYS", nullable=true)
private Integer underExtractDays;
@Column(name="UNDER_WEIGHT_RESERVE", nullable=false)
private Integer underWeightReserve;
以下是尝试删除记录的代码:
// Retrieve session from Hibernate
Session session = sessionFactory.getCurrentSession();
MISExceptionStoreUploadControlPK recordToBeDeleted = (MISExceptionStoreUploadControlPK) session.load(MISExceptionStoreUploadControlPK.class, misExceptionStoreUploadControl.getMisExceptionStoreUploadControlPK());
session.delete(recordToBeDeleted);
这是我得到的错误:嵌套异常是org.hibernate.MappingException:未知实体:com.classifieds.beans.volumetrics.MISExceptionStoreUploadControlPK
编辑'delete'代码以使用MISExceptionStoreUploadControl对象也不起作用。我收到一个错误,表示MISExceptionStoreUploadControlPK对象是预期的。
如果有帮助 - 我可以确认从表中所有记录的简单检索是有效的。
我很感激对此的一些建议......谢谢!
答案 0 :(得分:1)
我没有直截了当地为你的答案提供解决方案,而是告诉你如何删除。
首先执行session.delete(object);
触发一个查询(选择)以获取对象的持久状态,而不是删除查询以删除记录。
您可以通过以下方式删除记录。
使用查询 - 这是我的选择,因为我可以使用“和”来获得尽可能多的条件
Query query = session.createQuery("delete from TABLE where COL1 = :value");
query.setParameter("value", 10);
答案 1 :(得分:0)
经过多次尝试,我得到了必须工作的代码。对于其他人来说,这是更正后的代码:
// Retrieve session from Hibernate
Session session = sessionFactory.getCurrentSession();
MISExceptionStoreUploadControl recordToBeDeleted = (MISExceptionStoreUploadControl) session.load(MISExceptionStoreUploadControl.class, misExceptionStoreUploadControlPK);
session.delete(recordToBeDeleted);
希望它有用!