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_Object Persistence - Fatal编程技术网

Java JPA:持久化对象,父对象正常,但子对象未更新

Java JPA:持久化对象,父对象正常,但子对象未更新,java,hibernate,jpa,object-persistence,Java,Hibernate,Jpa,Object Persistence,我有我的域对象,Client,我在JSP上有一个预先填充了数据的表单,我可以接受修改后的值,并保存该对象 Client有一个名为MarketResearch的抽象实体,然后通过三个更具体的子类之一进行扩展 我有一个表单来预填充一些市场调研数据,但是当我进行更改并尝试持久化客户端时,它没有保存,有人能给我一些关于我哪里出错的提示吗 我的3个域类如下(删除的访问器等) 这就是我坚持的方式 public void persistClient(Client client) { if (clien

我有我的域对象,
Client
,我在JSP上有一个预先填充了数据的表单,我可以接受修改后的值,并保存该对象

Client
有一个名为
MarketResearch
的抽象实体,然后通过三个更具体的子类之一进行扩展

我有一个表单来预填充一些
市场调研
数据,但是当我进行更改并尝试持久化
客户端
时,它没有保存,有人能给我一些关于我哪里出错的提示吗

我的3个域类如下(删除的访问器等)

这就是我坚持的方式

public void persistClient(Client client)
{
    if (client.getId() != null)
    {
        getJpaTemplate().merge(client);
        getJpaTemplate().flush();
    } else
    {
        getJpaTemplate().persist(client);
    }
}
总而言之,如果我在父对象上更改了某些内容,它将保持不变,但如果我在子对象上更改了某些内容,它不会保持不变。我是否错过了一些显而易见的东西

我在persist/merge调用之前放置了一个断点,我可以看到对象上的更新值,但它似乎没有保存。我也在数据库级别进行了检查,运气不好


谢谢

您需要在
@OneToOne
上设置适当的
级联
选项,以便级联您的操作:

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "MARKET_RESEARCH_ID") 
private MarketResearch marketResearch; 

在hibernate中启用show_sql。看看它产生了什么。谢谢,这就成功了。事实上,我之前就试过了,似乎我需要重新运行,而不仅仅是在netbeans中进行“重建”。Noob错误;)
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "MARKET_RESEARCH_ID") 
private MarketResearch marketResearch;