title: Foreign Key of Type String in Hibernate
body: <p>I am using Spring boot for developing Hibernate-JPA. My foreign key is of type String. When I check MYSQL database after Junit tests, I notice that the foreign key field in the database is empty</p>
  
  <p>My code is as below:</p>
  
  <p>Child Class:</p>
  
  <pre><code>@Entity @Table(name = "nodes")
  public class Nodes { 
  
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private int id;
      private int node_id;
      private String name;
      private Date created_at;    
  
      @ManyToOne
      @JoinColumn(name="type", insertable=false, updatable=false)
      private Nodetypes nodetypes;
  
      @OneToMany(mappedBy = "nodes", cascade = CascadeType.ALL)
      private Set &lt;Nodeattributes&gt; nodeattributes;
  
      @OneToMany(mappedBy = "nodes", cascade = CascadeType.ALL)
      private Set &lt;Products&gt; products;
  
      public Set&lt;Products&gt; getProducts() {
          return products;
      }
  
      public void setProducts(Set&lt;Products&gt; products) {
          this.products = products;
      }
  
      public Set&lt;Nodeattributes&gt; getNodeattributes() {
          return nodeattributes;
      }
  
      public void setNodeattributes(Set&lt;Nodeattributes&gt; nodeattributes) {
          this.nodeattributes = nodeattributes;
      }
  
      public Nodetypes getNodetypes() {
          return nodetypes;
      }
  
      public void setNodetypes(Nodetypes nodetypes) {
          this.nodetypes = nodetypes;
      }
  
  
      public int getId() {
          return id;
      }
  
      public void setId(int id) {
          this.id = id;
      }
  
      public int getNode_id() {
          return node_id;
      }
  
      public void setNode_id(int node_id) {
          this.node_id = node_id;
      }
  
      public String getName() {
          return name;
      }
  
      public void setName(String name) {
          this.name = name;
      }
  
      public Date getCreated_at() {
          return created_at;
      }
  
      public void setCreated_at(Date created_at) {
          this.created_at = created_at;
      }
  }
  </code></pre>
  
  <p>Parent Class:</p>
  
  <pre><code>    @Entity @Table(name = "node_types")
      public class Nodetypes {
  
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private int id;
      private String label;
      private String name;
      private Boolean is_group;
      private Date created_at;
      private String type;
  
      public String getType() {
          return type;
      }
  
      public void setType(String type) {
          this.type = type;
      }
  
      @OneToMany(mappedBy = "nodetypes", cascade = CascadeType.ALL)
      private Set&lt;Nodes&gt; nodes;
  
      public Set&lt;Nodes&gt; getNodes() {
          return nodes;
      }
  
      public void setNodes(Set&lt;Nodes&gt; nodes) {
          this.nodes = nodes;
      }
  
      public int getId() {
          return id;
      }
  
      public void setId(int id) {
          this.id = id;
      }
  
      public String getLabel() {
          return label;
      }
  
      public void setLabel(String label) {
          this.label = label;
      }
  
      public String getName() {
          return name;
      }
  
      public void setName(String name) {
          this.name = name;
      }
  
      public Boolean getIs_group() {
          return is_group;
      }
  
      public void setIs_group(Boolean is_group) {
          this.is_group = is_group;
      }
  
      public Date getCreated_at() {
          return created_at;
      }
  
      public void setCreated_at(Date created_at) {
          this.created_at = created_at;
  }
  </code></pre>
  
  <p>My test conditions are generating an empty field for the foreign key in MYSQL Database</p>
  
  <pre><code>    @Test
      public void testCreateNodetype() {
          Nodetypes nodetypes = new Nodetypes();
          nodetypes.setId(1);
          nodetypes.setLabel("myLabel");
          nodetypes.setName(44);
          nodetypes.setIs_group(true);
          nodetypes.setCreated_at(new java.util.Date());
  
          nodetypesRepository.save(nodetypes);
      }
  
      @Test
      public void testCreateNodes() {
          Nodes node1 = new Nodes();
          node1.setCreated_at(new java.util.Date());
          node1.setName("nodeName");
          node1.setNode_id(444);
          node1.setNodetypes(nodetypesRepository.findOne(1));
  
          nodesRepository.save(node1);
      }
  </code></pre>
  
  <p>here is the MYSql schema used
  This is the Parent Table:</p>
  
  <pre><code>    CREATE TABLE `node_types` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `label` varchar(255) NOT NULL COMMENT 'display name',
    `name` varchar(255) NOT NULL COMMENT 'unique identification',
    `is_group` tinyint(1) NOT NULL,
    `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    UNIQUE KEY `name` (`name`)
  )
  </code></pre>
  
  <p>This is the Child Table:</p>
  
  <pre><code>    CREATE TABLE `nodes` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `node_id` int(11) DEFAULT NULL,
    `name` varchar(255) NOT NULL,
    `type` varchar(255) NOT NULL,
    `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    KEY `type_foreign_to_node_types` (`type`),
  
    CONSTRAINT `type_foreign_to_node_types` FOREIGN KEY (`type`) REFERENCES `node_types` (`name`)
  ) ```
  
  Any help would be apreciated
  </code></pre>