Java 更新多对一休眠关系无效
我对hibernate多对一关系有问题 我的系统是商业提案控制器,其中有一个负责来自用户实体的提案。当提案被创建并设置为负责人时,没有问题,工作正常。但当更改负责人和更新时,它会更改对象,我可以在datatable中看到,但在数据库中没有更新。如果我在页面上刷新,更新将消失Java 更新多对一休眠关系无效,java,hibernate,jpa,Java,Hibernate,Jpa,我对hibernate多对一关系有问题 我的系统是商业提案控制器,其中有一个负责来自用户实体的提案。当提案被创建并设置为负责人时,没有问题,工作正常。但当更改负责人和更新时,它会更改对象,我可以在datatable中看到,但在数据库中没有更新。如果我在页面上刷新,更新将消失 @Entity @Table(name = "proposal") public class Proposal implements Serializable { @Id @Gene
@Entity
@Table(name = "proposal")
public class Proposal implements Serializable {
@Id
@GeneratedValue
private Integer id;
@ManyToOne
private User responsible;
............
DAO代码
public void update(Proposal proposal) {
this.session.update(proposal);
}
在User类中,我没有对这种关系做任何注释,它是一种单向关系。课程提案还使用用户类作为参与者制作用户包,这种关系也将是单向关系
我试图在用户类中进行注释,但也没有效果
带有注释的用户类
@Entity
@Table(name="user")
public class User implements Serializable{
@OneToMany
private List<Proposal> proposal;
有人对此有什么想法吗
谢谢刷新数据库后,您将看到更改。手动刷新或提交事务后刷新。用户类-必须是既需要@entity注释又需要@Id注释的实体,或者是可嵌入类,并且在这种情况下应以相应的方式进行配置 如果您说-@Entity而用户没有@Id,我不确定它是如何工作的,但请重试: 为用户运行flush。如果你不会得到任何异常-它是一个可扩展的对象。您应该在db/web应用程序日志文件中看到-sql插入查询。 提交事务。应提交用户的更新值。
如果在提交之前调用refresh,所有更改都将丢失。在我看来,您与用户的多通关系中缺少@JoinColumn注释。尝试更新到以下位置:
@ManyToOne
@JoinColumn(name="userId")
private User responsible;
但显然,将“userId”替换为表中指定的id名称。如果用户或建议类上都没有JoinColumn或MappedBy注释,如何告诉Hibernate如何解决关系?
@ManyToOne
@JoinColumn(name="userId")
private User responsible;