【发布时间】:2014-10-21 20:46:05
【问题描述】:
我真的希望能够从具有复合主键的单个表中删除记录。这是我的复合键代码(省略了获取器/设置器):
@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;
这是我的实体代码(省略了获取器/设置器):
@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
编辑“删除”代码以使用 MISExceptionStoreUploadControl 对象也不起作用。我收到一条错误消息,提示需要 MISExceptionStoreUploadControlPK 对象。
如果有帮助 - 我可以确认从表中简单检索所有记录的工作正常。
我将不胜感激有关这方面的一些建议...谢谢!
【问题讨论】:
-
我不建议使用
@Embeddable这意味着您可以在逻辑上创建为您创建的表hibernate 的两个对象。这意味着表格未标准化。我建议建立@OneToOne关系。 -
为什么要删除PK对象? PK 对象不是实体,不能显式删除。您只能使用与此 PK 对象关联的实体来删除它。
-
Dibya / Ivan,感谢您这么快回复我。请您再提供一点帮助好吗?我在哪里放置@OneToOne 以及如何从实体中删除记录?谢谢