java - Java JPA with DiscriminatorColumn
问题描述
我对DiscriminatorColumn和DiscriminatorValue有疑问。
我的期望是:
-TypeOne、TypeTwo、TypeThree 是与用户相关的选项。
- 一个用户只能有 1 行 TypeOne。
- 一个用户可以有 TypeTwo 或 TypeThree 多行。
-我使用 Pageable 作为搜索条件并按typeOneEntity.optionCode排序
用户表。 |id|user_id| |-|-| |1114|a@a.com|
用户选项表。 |id|user_id|option_code|option_type_name| |-|-|-|-| |1|1114|CODE_1|TYPE_1| |2|1114|CODE_2|TYPE_2| |3|1114|CODE_3|TYPE_2| |4|1114|CODE_4|TYPE_3|
附言。User.id = UserOption.user_id
我必须创建三个实体映射到该数据。
@Entity
@Table(name = "user")
public class User{
@Column()
private Long id;
@Column()
private String userId;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "id", referencedColumnName = "user_id", insertable = false, updatable = false)
private TypeOne typeOneEntity;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "id", referencedColumnName = "user_id", insertable = false, updatable = false)
private Set<TypeTwo> typeTwoEntities;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "id", referencedColumnName = "user_id", insertable = false, updatable = false)
private Set<TypeThree> typeThreeEntities;
}
@Table(name = "user_option")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "option_type_name")
public abstract class UserOption{
@Column
private Long id;
@Column(name = "user_id", nullable = false)
private Long userId;
@Column
private String optionCode;
}
@Entity
@DiscriminatorValue(value = "TYPE_1")
public class TypeOne extends UserOption {
}
@Entity
@DiscriminatorValue(value = "TYPE_2")
public class TypeTwo extends UserOption {
}
@Entity
@DiscriminatorValue(value = "TYPE_3")
public class TypeThree extends UserOption {
}
在我构建并尝试查找数据之后,我发现了两个问题。
1.On typeOneEntity (@OneToOne)为空。
2.在@OneToMany : 我收到这个错误 ORA-01722: invalid number (来自 Hibernate 的错误消息)
我创建的这个实体模型是否正确?或者它需要改变实体模型。
解决方案
推荐阅读
- spring - Spring 数据预测
- php - Laravel - 为路由添加额外信息
- machine-learning - 神经网络训练精细,测试预测可怕到近乎荒谬
- amazon-web-services - 监控 aws ec2 实例端口
- abap - SAP Hybris Marketing / 访问电子邮件操作中的合作伙伴 ID
- python - 如何用Python垂直编写一个csv?
- ajax - 如何在 ClojureScript 中进行下一次调用之前等待服务器响应?
- php - 数组索引可以从同一数组中的其他数组索引获取值吗
- visual-studio - Visual Studio 异常设置搜索快捷方式
- python - 获取用 Python Zelle 图形绘制的图形坐标的颜色