2017-12-25 21 views
0

私のコードを実行しているときにエラーが発生しています。私がやっている間違いを教えてください。フィールドcustomer_idにデフォルト値がありません

ここにエラーメッセージがあります。

Hibernate: insert into INSUBUY_CUSTOMER (CUSTOMER_DOB, CUSTOMER_NAME) values (?, ?) 
Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not execute statement 
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54) 
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) 
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112) 
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:190) 
    at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:96) 
    at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:58) 
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3032) 
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3558) 
    at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:98) 
    at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:490) 
    at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:195) 
    at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:179) 
    at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:214) 
    at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:324) 
    at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:288) 
    at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:194) 
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:125) 
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:209) 
    at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55) 
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:194) 
    at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49) 
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) 
    at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:715) 
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:707) 
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:702) 
    at com.insubuy.controller.App.main(App.java:51) 
Caused by: java.sql.SQLException: Field 'CUSTOMER_ID' doesn't have a default value 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) 

以下は私が実行しているコードです。ここで

Policy.java

package com.insubuy.model; 

import java.io.Serializable; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Table; 

import org.hibernate.annotations.GenericGenerator; 
import org.hibernate.annotations.Parameter; 

@Entity 
@Table(name="INSUBUY_CUSTOMER_POLICY_DETAILS") 
public class Policy implements Serializable{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    @Id 
    @Column(name="POLICY_ID") 
    int policy_id; 

    @Column(name="POLICY_START_DATE") 
    String policyStartDate; 

    @Column(name="POLICY_END_DATE") 
    String policyEndDate; 

    @GenericGenerator(name = "generator", strategy = "foreign", 
    parameters = @Parameter(name = "property", value = "INSUBUY_CUSTOMER")) 
    @GeneratedValue(generator = "generator") 
    @Column(name="CUSTOMER_ID") 
    int customer_id; 

    public int getCustomer_id() { 
     return customer_id; 
    } 

    public void setCustomer_id(int customer_id) { 
     this.customer_id = customer_id; 
    } 

    public Policy() { 
     super(); 
    } 

    public int getPolicy_id() { 
     return policy_id; 
    } 



    public void setPolicy_id(int policy_id) { 
     this.policy_id = policy_id; 
    } 



    public String getPolicyStartDate() { 
     return policyStartDate; 
    } 

    public void setPolicyStartDate(String policyStartDate) { 
     this.policyStartDate = policyStartDate; 
    } 

    public String getPolicyEndDate() { 
     return policyEndDate; 
    } 

    public void setPolicyEndDate(String policyEndDate) { 
     this.policyEndDate = policyEndDate; 
    } 


} 

Address.java

package com.insubuy.model; 


import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.Table; 

import org.hibernate.annotations.GenericGenerator; 
import org.hibernate.annotations.Parameter; 

@Entity 
@Table(name="INSUBUY_CUSTOMER_ADDRESS") 
public class Address { 

    @Id 
    @Column(name="ADDRESS_ID") 
    private String address_id; 

    public String getAddress_id() { 
     return address_id; 
    } 
    public void setAddress_id(String address_id) { 
     this.address_id = address_id; 
    } 
    @Column(name="ADDRESS_STREET") 
    private String address_street; 

    @Column(name="ADDRESS_CITY") 
    private String address_city; 

    @Column(name="ADDRESS_STATE") 
    private String address_state; 

    @Column(name="ADDRESS_ZIPCODE") 
    private String address_zipcode; 

    @GenericGenerator(name = "generator", strategy = "foreign", 
    parameters = @Parameter(name = "property", value = "INSUBUY_CUSTOMER")) 
    @GeneratedValue(generator = "generator") 
    @Column(name="CUSTOMER_ID") 
    private int customer_id; 
    public String getAddress_street() { 
     return address_street; 
    } 
    public void setAddress_street(String address_street) { 
     this.address_street = address_street; 
    } 
    public String getAddress_city() { 
     return address_city; 
    } 
    public void setAddress_city(String address_city) { 
     this.address_city = address_city; 
    } 
    public String getAddress_state() { 
     return address_state; 
    } 
    public void setAddress_state(String address_state) { 
     this.address_state = address_state; 
    } 
    public String getAddress_zipcode() { 
     return address_zipcode; 
    } 
    public void setAddress_zipcode(String address_zipcode) { 
     this.address_zipcode = address_zipcode; 
    } 
    public int getCustomer_id() { 
     return customer_id; 
    } 
    public void setCustomer_id(int customer_id) { 
     this.customer_id = customer_id; 
    } 



} 

Customer.java

package com.insubuy.model; 

import static javax.persistence.GenerationType.IDENTITY; 

import java.util.*; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.JoinColumns; 
import javax.persistence.OneToOne; 
import javax.persistence.Table; 

@Entity 
@Table(name="INSUBUY_CUSTOMER") 
public class Customer { 

    private int customer_id; 
    private String customer_name; 
    private Date customer_dob; 
    private Address address; 
    private Policy policy; 

    @OneToOne 
    @JoinColumn(name = "CUSTOMER_ID") 
    public Address getAddress() { 
     return address; 
    } 
    public void setAddress(Address address) { 
     this.address = address; 
    } 
    @OneToOne 
    @JoinColumn(name = "CUSTOMER_ID") 
    public Policy getPolicy() { 
     return policy; 
    } 
    public void setPolicy(Policy policy) { 
     this.policy = policy; 
    } 

    @Id 
    @GeneratedValue(strategy = IDENTITY) 
    @Column(name = "CUSTOMER_ID") 
    public int getCustomer_id() { 
     return customer_id; 
    } 
    public void setCustomer_id(int customer_id) { 
     this.customer_id = customer_id; 
    } 

    @Column(name = "CUSTOMER_NAME") 
    public String getCustomer_name() { 
     return customer_name; 
    } 
    public void setCustomer_name(String customer_name) { 
     this.customer_name = customer_name; 
    } 

    @Column(name = "CUSTOMER_DOB") 
    public Date getCustomer_dob() { 
     return customer_dob; 
    } 
    public void setCustomer_dob(Date customer_dob) { 
     this.customer_dob = customer_dob; 
    } 

} 

はメインファイル

package com.insubuy.controller; 

import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.Iterator; 
import java.util.List; 

import org.hibernate.Query; 
import org.hibernate.Session; 



import com.insubuy.model.Address; 
import com.insubuy.model.Customer; 
import com.insubuy.model.Policy; 
import org.aravind.util.HibernateUtil; 

public class App { 
    public static void main(String[] args) { 
     System.out.println("Hibernate one to one (Annotation)"); 
     Session session = HibernateUtil.getSessionFactory().openSession(); 

     session.beginTransaction(); 

     Customer customer=new Customer(); 
     customer.setCustomer_id(3); 
     customer.setCustomer_name("robert"); 
     Calendar myCal = Calendar.getInstance(); 
     myCal.set(Calendar.YEAR, 1988); 
     myCal.set(Calendar.MONTH, 01); 
     myCal.set(Calendar.DAY_OF_MONTH, 01); 
     Date theDate = myCal.getTime(); 
     Address addr=new Address(); 
     Policy policy=new Policy(); 

     addr.setAddress_city("dallas"); 
     addr.setAddress_id("3"); 
     addr.setAddress_state("texas"); 
     addr.setAddress_street("xyz"); 
     addr.setAddress_zipcode("75125"); 

     policy.setPolicy_id(3333); 
     policy.setPolicyEndDate("2018-01-01"); 
     policy.setPolicyStartDate("2017-01-01"); 

     customer.setAddress(addr); 
     customer.setPolicy(policy); 
     customer.setCustomer_dob(theDate); 

     session.save(customer); 
     session.getTransaction().commit(); 
     session.close(); 

     System.out.println("Done"); 
    } 
} 
です

私はなぜcustomer_idがデフォルト値を持っていないのか分かりません。どんな助けもありがとうございます。

ありがとうございました

答えて

0

問題は次のコードでありました。なぜそれがSQL文のデフォルト値を生成していないのか分かりません。コードを削除すると、データベースに挿入できました。

@GeneratedValue(strategy = IDENTITY) 
関連する問題