JPA: persisting object, parent is ok but child not updated

会有一股神秘感。 提交于 2020-01-05 09:04:27

问题


I have my domain object, Client, I've got a form on my JSP that is pre-populated with its data, I can take in amended values, and persist the object.

Client has an abstract entity called MarketResearch, which is then extended by one of three more concrete sub-classes.

I have a form to pre-populate some MarketResearch data, but when I make changes and try to persist the Client, it doesn't get saved, can someone give me some pointers on where I've gone wrong?

My 3 domain classes are as follows (removed accessors etc)

public class Client extends NamedEntity
{
    @OneToOne
    @JoinColumn(name = "MARKET_RESEARCH_ID")
    private MarketResearch marketResearch;
    ...
}


@Inheritance(strategy = InheritanceType.JOINED)
public abstract class MarketResearch extends AbstractEntity
{
  ...
}

@Entity(name="MARKETRESEARCHLG")
public class MarketResearchLocalGovernment extends MarketResearch
{

    @Column(name = "CURRENT_HR_SYSTEM")
    private String currentHRSystem;
    ...
}

This is how I'm persisting

public void persistClient(Client client)
{
    if (client.getId() != null)
    {
        getJpaTemplate().merge(client);
        getJpaTemplate().flush();
    } else
    {
        getJpaTemplate().persist(client);
    }
}

To summarize, if I change something on the parent object, it persists, but if I change something on the child object it doesn't. Have I missed something blatantly obvious?

I've put a breakpoint right before the persist/merge calls, I can see the updated value on the object, but it doesn't seem to save. I've checked at database level as well, no luck

Thanks


回答1:


You need to set a proper cascade option on @OneToOne in order to get your operations cascaded:

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


来源:https://stackoverflow.com/questions/2530498/jpa-persisting-object-parent-is-ok-but-child-not-updated

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!