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
Hibernate仅通过传递id“创建OneToMany的子对象”;“家长”;实体_Hibernate_Jpa_Parent Child - Fatal编程技术网

Hibernate仅通过传递id“创建OneToMany的子对象”;“家长”;实体

Hibernate仅通过传递id“创建OneToMany的子对象”;“家长”;实体,hibernate,jpa,parent-child,Hibernate,Jpa,Parent Child,我正在PostgreSQL之上编写一个由Hibernate支持的JEE7JAX-RSRESTAPI 我有一个课程实体,人们可以通过创建注册来注册。 表registrations有一个外键course\u id引用courses.id 这些实体是: @实体 @表(name=“courses”) @TypeDef(name=“pgsql_enum”,typeClass=PostgreSQLEnumType.class) 公共课{ //…其他属性因简洁而省略。。。 @OneToMany(mappedB

我正在PostgreSQL之上编写一个由Hibernate支持的JEE7JAX-RSRESTAPI

我有一个
课程
实体,人们可以通过创建
注册
来注册。 表
registrations
有一个外键
course\u id
引用
courses.id

这些实体是:

@实体
@表(name=“courses”)
@TypeDef(name=“pgsql_enum”,typeClass=PostgreSQLEnumType.class)
公共课{
//…其他属性因简洁而省略。。。
@OneToMany(mappedBy=“课程”)
@订购人(“在描述处更新”)
私人名单登记;
}
@实体
@表(name=“注册”)
@TypeDef(name=“pgsql_enum”,typeClass=PostgreSQLEnumType.class)
公开课注册{
//…其他属性因简洁而省略。。。
@NotNull
@列(name=“course\u id”,columnDefinition=“NUMERIC(19,0)”,insertable=false,updateable=false)
私人长假;
@许多酮
@JoinColumn(name=“课程id”)
私人课程;
}
Registration.courseId
@Column
注释指定
insertable=false,updateable=false
,因为否则我无法部署应用程序,因为存在
org.hibernate.MappingException:实体映射中的重复列

当然,如果我尝试使用
courseId
列持久化
Registration
,它的值不会包含在Hibernate生成的SQL INSERT语句中(insertable=false)

目前,我通过
courseId
获取整个
Course
实体,并将其传递给
Registration.setCourse
以成功创建
注册
,但我正在寻找一种方法来避免对我将为此应用程序创建的所有
@manytone
关联进行手动“修补”

如何定义我的实体,以便通过仅设置
courseId
而不是在
Registration.Course
中提供整个“父”
Course
来持续注册


谢谢:)

您可以通过以下方式更正您的
注册
实体:

@实体
@表(name=“注册”)
@TypeDef(name=“pgsql_enum”,typeClass=PostgreSQLEnumType.class)
公开课注册{
// ... 
@NotNull
@列(name=“course\u id”,columnDefinition=“NUMERIC(19,0)”)
私人长假;
@许多酮
@JoinColumn(name=“course\u id”,insertable=false,updateable=false)
私人课程;
}

您可以通过以下方式更正您的
注册
实体:

@实体
@表(name=“注册”)
@TypeDef(name=“pgsql_enum”,typeClass=PostgreSQLEnumType.class)
公开课注册{
// ... 
@NotNull
@列(name=“course\u id”,columnDefinition=“NUMERIC(19,0)”)
私人长假;
@许多酮
@JoinColumn(name=“course\u id”,insertable=false,updateable=false)
私人课程;
}