HIbernate один ко многим / многие к одному с помощью аннотации @Embeddable - PullRequest
0 голосов
/ 06 июня 2018

Когда я пытаюсь сохранить объект Customer, исключение указывает, что он не может вставить NULL в () ...

Я полагаю, что исключение вызвано из-за используемой аннотации @Embeddable

Но когда я явно устанавливаю значение customer_id, оно работает нормально, но значение не сохраняется как внешний ключ в таблице Customerphone.

@Entity
@Table(name = "CUSTOMER")
public class Customer implements java.io.Serializable {

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "Customer")
    public Set<CustomerPhone> getCustomerPhones() {
        return this.CustomerPhones;
    }
}

@Entity
@Table(name="CUSTOMER_PHONE")
public class CustomerPhone  implements java.io.Serializable {

    private CustomerPhoneId id;

    @EmbeddedId
    @AttributeOverrides( {
        @AttributeOverride(name="customerId", column=@Column(name="CUSTOMER_ID", nullable=false, precision=22, scale=0) ), 
        @AttributeOverride(name="phoneTypeCd", column=@Column(name="PHONE_TYPE_CD", nullable=false, length=5) ) } )
    public CustomerPhoneId getId() {
        return this.id;
    }

    public void setId(CustomerPhoneId id) {
        this.id = id;
    }


    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="CUSTOMER_ID", nullable=false, insertable=false, updatable=false)
    public Customer getCustomer() {
        return this.stpCustomer;
    }

}

@Embeddable
public class CustomerPhoneId  implements java.io.Serializable {

    private BigDecimal customerId;

    @Column(name="CUSTOMER_ID", nullable=false, precision=22, scale=0)
    public BigDecimal getCustomerId() {
        return this.customerId;
    }

}

1 Ответ

0 голосов
/ 06 июня 2018

У вашего идентификатора нет схемы генерации, как у @GeneratedValue(strategy=GenerationType.AUTO).

. В этих случаях вам нужно установить идентификатор вручную, в вашем случае вам нужно вручную установить customerId перед сохранением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...