Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带鉴别器列的Java JPA_Java_Hibernate_Jpa_Inheritance_Discriminator - Fatal编程技术网

带鉴别器列的Java JPA

带鉴别器列的Java JPA,java,hibernate,jpa,inheritance,discriminator,Java,Hibernate,Jpa,Inheritance,Discriminator,我对鉴别器列和鉴别器值有问题 我的期望是: -类型一、类型二、类型三是与用户相关的选项。 -用户只能有一行TypeOne。 -一个用户可以有两个或三个类型的多行。 -我使用Pageable作为搜索条件,并按typeOneEntity进行排序。optionCode 用户表。 |id |用户id| |-|-| |1114|a@a.com| 用户选项表。 |id |用户id |选项|代码|选项|类型|名称| |-|-|-|-| |1 | 1114 |代码| 1 |类型| 1| |2 | 1114 |代

我对鉴别器列鉴别器值有问题

我的期望是:
-类型一、类型二、类型三是与用户相关的选项。
-用户只能有一行TypeOne。
-一个用户可以有两个或三个类型的多行。
-我使用Pageable作为搜索条件,并按typeOneEntity进行排序。optionCode

用户表。 |id |用户id| |-|-| |1114|a@a.com|

用户选项表。 |id |用户id |选项|代码|选项|类型|名称| |-|-|-|-| |1 | 1114 |代码| 1 |类型| 1| |2 | 1114 |代码| 2 |类型|2| |3 | 1114 |代码| 3 |类型| 2| |4 | 1114 |代码| 4 |类型| 3|

Ps.User.id=UserOption.User\u 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;
}
在构建并尝试查找数据后,我发现了两个问题。
1.在typeOneEntity(@OneToOne)上,为空。
2.在OneToMany上:我收到了这个错误ORA-01722:无效号码(来自Hibernate的错误消息)

我创建的实体模型是否正确?
或者它需要更改实体模型。

您可能需要为每个子类使用单独的联接列“无效数字”似乎不相关,但是,您的设置可能存在另一个问题。请共享堆栈跟踪和生成的SQL。
@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 {
}