0 Replies Latest reply on Jun 11, 2008 3:33 PM by tovar

    JPA problem with insert

    tovar

      Hi. I have problem with inserting in database.
      I don't know how to insert object and disable an attempt of inserting in related tables.

      example:

      @Entity
      @Table(name = "MAIN_TABLE", schema = "SCH")
      @Inheritance(strategy=InheritanceType.JOINED)
      public class MainClass extends MainDataObject {

      @Id
      public Integer id;

      @Column(name = "session", nullable = false)
      @ManyToOne(optional = false, cascade = CascadeType.PERSIST)
      @JoinColumn(name="session",referencedColumnName="id")
      public ProblematicSession session;


      @Column(name = "destination_member_state", nullable = false, length = 2)
      @ManyToOne(optional = false, cascade = CascadeType.PERSIST)
      @JoinColumn(name="destination_member_state",referencedColumnName="country_code")
      public Country destinationMemberState;
      ---------------------------------------------------

      @Entity
      @Table(name = "PROBBLEMATICTABLE", schema = "SCH")
      public class ProblematicSession extends MainDataObject {

      @Id
      @Column(insertable = false)
      @GeneratedValue(strategy=GenerationType.IDENTITY)
      public Integer id;

      Database create ID, so I put insertable = false and strategy=GenerationType.IDENTITY.

      When I insert into MAIN_TABLE, how to disable an attempt of inserting in related table (PROBBLEMATICTABLE).

      if I set for example ProblematicSession.id = 1 error is:
      This existing value was either provided via an initializer or by calling the setter method. You either need to remove the @GeneratedValue annotation or modify the code to remove the initializer processing.

      If I set ProblematicSession.id = null, also try to insert into PROBBLEMATICTABLE. A do not want that!!!

      Also I have table where database do not insert primary key, and there is no problem (Country).

      @Id
      @Column(name = "country_code", nullable = false, length = 2)
      public String countryCode;

      public String getCountryCode() {
      return countryCode;
      }