Pergunta

This might be duplicate. But I don't find a proper link to my problem. May be my searching is too bad. So hoping for a good answer or link to any useful solution. Here is my Configuration.java

public class Configuration  implements java.io.Serializable {

    private Integer configurationId;
    private String configurationName;
    private Set<ConfigFields> ConfigFieldses = new HashSet<ConfigFields>(0);

    //getter and setter

    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="configuration")
    public Set<ConfigFields> getConfigFieldses() {
        return this.ConfigFieldses;
    }

    public void setConfigFieldses(Set<ConfigFields> ConfigFieldses) {
        this.ConfigFieldses = ConfigFieldses;
    }
}

ConfigFields.java

public class ConfigFields  implements java.io.Serializable {
    private Integer configFieldId;
    private Configuration configuration;
    private String configFieldName;

    //getter and setter

    @XmlTransient
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="ConfigurationId")
    public Configuration getConfiguration() {
        return this.configuration;
    }

    public void setConfiguration(Configuration configuration) {
        this.configuration = configuration;
    }
}

Here is my code to insert the configuration

Configuration configuration=new Configuration();
configuration.setConfigurationName(configName);
List<ConfigFields> configFieldsList=new ArrayList<ConfigFields>();

for(int i=0;i<fieldLength;i++) {
    ConfigFields configField=new ConfigFields();
//  configField.setConfiguration(configuration);

    String stringI=Integer.toString(i);

    if(i<fieldLength-1) {
        configField.setConfigFieldName(ENGINE_FORM+stringI);
    } else {
        configField.setConfigFieldName(ENGINE_TABLE+stringI);
    }
    configFieldsList.add(configField);
}

Set<ConfigFields> configFields-new HashSet<ConfigFields>(configFieldsList);

configuration.setConfigFieldses(configFields);

configurationService.insert(configuration);

I want to insert one configuration in Configuration table and a set of configFields in ConfigFields table. ConfigFields table has configuration id that should come form confguration table. For a set of config fields, configuration id will be same (As you can guess from code).

The above code works and saving to both tables. But when I check in ConfigFields table, the configurationId is null. I is not setting the Id. Why? As you can see I am not setting the configuration object in each list of ConfigFields object. Do I need to set that?

How to solve this?

Foi útil?

Solução

Yes what you have persisted is a uni directional relationship. But since you expect hibernate to maintain a bi directional relationship you need to set the configuration object to configField

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top