TransientObjectException - PullRequest
       6

TransientObjectException

1 голос
/ 28 июня 2011
Entity
@Table(name = "ADDRESS")
public class Address {

    @Id
    @Column(name = "ID")
    @GeneratedValue
    private int addressid;

    @OneToOne
    @JoinColumn(name = "CITY_ID",nullable = true,insertable=false, updatable=false)
    private City city = new City();

    @OneToOne
    @JoinColumn(name = "DISTRICT_ID",nullable = true,insertable=false, updatable=false)
    private District district = new District();
}

Привет, У меня есть класс с именем Address, и я не могу сохранить этот класс в спящем режиме с DISTRICT_ID = null.

Ошибка

org.hibernate.TransientObjectException: объект ссылается на несохраненный временный экземпляр - сохраните временный экземпляр перед сбросом: form.District

Я просто не знаю, чего мне не хватает ....

Ответы [ 4 ]

2 голосов
/ 28 июня 2011

Если вы хотите, чтобы district было null, это должно быть на самом деле null, а не указывать на новый временный экземпляр:

@OneToOne
@JoinColumn(name = "DISTRICT_ID",nullable = true,insertable=false, updatable=false)     
private District district = null;
1 голос
/ 30 июня 2011

Может быть, вам стоит подумать о том, чтобы city_id и city_name были в одном и том же объекте, и если вы хотите, чтобы таблица «Город и район» была только для чтения, вы не сохраните свой город и район.

0 голосов
/ 28 июня 2011

Если вы хотите сохранить округ с нулевым DISTRICT_ID, вы не можете использовать его в качестве первичного ключа и, следовательно, не можете аннотировать его с помощью @Id. Вам нужно будет выбрать другой идентификатор для округа.

0 голосов
/ 28 июня 2011

Район помечен @Entity?
Возможно, вам нужно указать cascade на @OneToOne Пример: @OneToOne(cascade={CascadeType.PERSIST})

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