我有遗留数据库哪些实体使用组合键映射。我使用Eclipse JPA Tools将这些表转换为实体,但接收到的实体不工作。在Tomcat启动我收到异常: referencedColumnNames(PETROL_STATION_ID, PROVIDER_ID) of xxx.FuelCardEntity.petrolStationInfo referencing xxx.PetrolStationInfoEntity not mapped to a single property
ManyToOne与组合键的关系
复合键类:
@Embeddable
public class PetrolStationInfoEntityPK implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name="PETROL_STATION_ID", insertable=false, updatable=false)
private long petrolStationId;
@Column(name="PROVIDER_ID", insertable=false, updatable=false)
private long providerId;
@Column(name = "\"VERSION\"")
private long version;
// hashCode and equals method
}
PetrolStationInfoEntity类:
@Entity
@Table(name="PETROL_STATION_INFO")
@NamedQuery(name="PetrolStationInfoEntity.findAll", query="SELECT p FROM PetrolStationInfoEntity p")
public class PetrolStationInfoEntity implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private PetrolStationInfoEntityPK id;
}
的FuelCardEntity类控股的关系:
public class FuelCardEntity implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private FuelCardEntityPK id;
// bi-directional many-to-one association to PetrolStationInfoEntity
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "INFO_PETROL_STATION_ID", referencedColumnName = "PETROL_STATION_ID", nullable = false, insertable = false, updatable = false),
@JoinColumn(name = "INFO_PROVIDER_ID", referencedColumnName = "PROVIDER_ID", nullable = false, insertable = false, updatable = false) })
private PetrolStationInfoEntity petrolStationInfo;
的只有建议我找到了阿里亚dy是使用@JoinColumns
,但正如你所看到的,它已经在那里,它仍然不起作用。任何想法如何解决这个问题而不改变数据库模式? 这个应用程序是用Spring 3 + Hibernate 4编写的。
在此先感谢!
是的,我发现这个问题缺少专栏刚刚写后,它帮助! :)有趣的部分是,实体是使用JPA工具生成的,所以我不确定为什么第三列丢失。我的瞎猜是它用'@Column(name =“\ VERSION \”“)创建了'PetrolStationInfoEntityPK'。看起来这些第二个双引号是它被省略的问题。 – Nav