Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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 保存具有一对多单向关系的对象无效_Java_Hibernate_Jpa - Fatal编程技术网

Java 保存具有一对多单向关系的对象无效

Java 保存具有一对多单向关系的对象无效,java,hibernate,jpa,Java,Hibernate,Jpa,我有秩序,它可以有很多状态。试图保存新状态似乎无法处理单向关系。 是这样吗?我不能像代码中所示,以从订单到状态的单向关系保存状态?有什么可能的方法来保存它 表:订单(主键订单ID、订单编号) 表:订单状态(主键订单状态ID、FK订单ID、状态) 像这样点菜 @Entity @Table(name = "ORDER") public class Order { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name

我有秩序,它可以有很多状态。试图保存新状态似乎无法处理单向关系。 是这样吗?我不能像代码中所示,以从订单到状态的单向关系保存状态?有什么可能的方法来保存它

表:订单(主键订单ID、订单编号)

表:订单状态(主键订单状态ID、FK订单ID、状态)

像这样点菜

@Entity
@Table(name = "ORDER")
public class Order {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "PK_ORDER_ID", unique = true, nullable = false)
private Long id;

@JoinColumn(name = "FK_ORDER_ID", referencedColumnName = "PK_ORDER_ID")
private Set<OrderStatus> orderStatus;
}
@Entity
@Table(name = "ORDER_STATUS")
public class OrderStatus {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "PK_ORDER_STATUS_ID")
private Long id;

@Column(name = "STATUS")
private String status;

public OrderStatus(String status) {
    this.status = status;
}

}
某处有另一个文件

order.getStatus().add(new OrderStatus("new"));
保存更改的数据库代码为-

@Transactional(TxType.REQUIRED)
public U merge(U EntityToUpdate) {
    return em.merge(EntityToUpdate);
}
它给出了以下错误

java.sql.SQLException: (conn:40) Field 'FK_ORDER_ID' doesn't have value
Query is: insert into ORDER_STATUS (STATUS) values (?), parameters ['new']

执行“保存”的代码在哪里???包括事务边界您需要在JoinColumn上方放置多个注释,请选中此项。这不会在hibernate上运行。