java - 使用 EmbeddedId 休眠 OneToOne
问题描述
尝试合并分离实体时抛出“TypeMismatchException:提供了错误类型的 id”错误。如果对象没有分离,它就可以工作。如果 id 不是 @EmbeddedId,它也可以工作。
可以在此处找到示例存储库https://github.com/joes-code/hibernate-map
// Asset.java
@Entity
@Table(name = "asset")
public class Asset {
@EmbeddedId
private AssetId id;
@Column(name = "asset_cost"
private BigDecimal price;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "asset_id", referencedColumnName = "asset_id", nullable = false, insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
private AssetDetail assetDetail;
}
// AssetId.java
@Embeddable
public class AssetId {
@Column(name = "asset_id", nullable = false)
private Integer assetId;
}
// AssetDetail.java
@Entity
@Table(name = "asset_detail")
public class AssetDetail {
@EmbeddedId
private AssetDetailId id;
@Column(name = "description", length = 35)
private String description;
}
// AssetDetailId.java
@Embeddable
public class AssetDetailId {
@Column(name = "asset_id", nullable = false)
private Integer assetId;
}
我正在使用 Hibernate 5.4.3.Final
任何想法我做错了什么?似乎 Hibernate 假设 Asset 和 AssetDetail 共享相同的 Id 类?
解决方案
推荐阅读
- java - 使用 Java 9 和 Java 10 从 Eclipse 上的 Tomcat 中删除 java.endorsed.dirs
- angular - 如何使用 Angular 2 处理异步本地存储?
- google-cloud-platform - Cloud Functions:详细的堆栈跟踪:错误:找不到模块“googleapis”
- ios - 我在哪里可以获得“Firebase 项目服务帐户的有效 Oauth 2.0 令牌”
- bash - 从循环中获取旧值
- java - 蓝牙一次读取一个输入字符
- php - AmazonAWS 保护 S3 Bucket 视频
- laravel - 带有laravel的数据表如何呈现hasMany关系
- javascript - 将图像放入图像中
- javascript - .appendChild 和 window.print();