2011-09-01 2 views
1

UPDATEПроблема удаления лица с JPA

Мой друг сделал те же строки кода и его линии просто работал. Что бы это могло быть? Я использую NetBeans 7.0.1, а его - 6.9.1. Мой GlassFish является 3,1 и его является 3.0.1

КОНЕЦ UPDATE

@Inheritance(strategy= InheritanceType.JOINED) 
@Entity 
@Table(name = "vehicle") 
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.INTEGER) 
@NamedQueries({ 
    @NamedQuery(name = "Vehicle.findAll", query = "SELECT v FROM Vehicle v")}) 
public class Vehicle implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "id") 
    private Integer id; 

    @JoinColumn(name = "color_id") 
    @ManyToOne(optional = false) 
    private Color color; 

public Vehicle() { 
} 

//Getters and Setters 

} 

--- 

@Entity 
@Table(name = "car") 
@DiscriminatorValue("1") 
@NamedQueries({ 
    @NamedQuery(name = "Car.findAll", query = "SELECT c FROM Car c")}) 
public class Car extends Vehicle implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Column(name = "airbag") 
    private Boolean airbag; 

public Car() { 
} 

//Getters and Setters 

} 

Когда я пытаюсь удалить автомобиль это thorws исключение, и в StackTrace имеет UPDATE запрос, который является довольно странно, если я пытаюсь удалить.

У вас есть идеи, что может быть здесь?

Car car = em.find(Car.class, id); 
em.remove(car); 

Stack:

Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'color_id' cannot be null 
Error Code: 1048 
Call: UPDATE vehicle SET color_id = ? WHERE (id = ?) 
    bind => [2 parameters bound] 
Query: DeleteObjectQuery(br.com.something.entity.Vehicle[ id=3 ]) 
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:324) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:840) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:906) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:592) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:535) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:1702) 
    at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:253) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:207) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:193) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.updateObject(DatasourceCallQueryMechanism.java:749) 
+0

Не могли бы вы выслать код, в котором вы удаляете автомобиль из БД? –

+0

Я отредактировал прямо перед stacktrace – pringlesinn

+0

Что происходит, когда Hibernate пытается отключить Car от Color до фактического удаления автомобиля, что явно нарушает ненулевое ограничение на БД. Почему это происходит, я не могу понять, поэтому я комментирую и не отвечаю :( –

ответ

1

Возможно, вам необходимо CascadeType о связи между автомобилем и цвета?

+0

Это не так. Он отлично работает на компьютере моего приятеля, но у меня нет. – pringlesinn

+0

Вы используете одну и ту же базу данных? определения таблиц соответствуют? – Freiheit

+0

Ya, единственная разница - это версии netbeans и glassfish. – pringlesinn

Смежные вопросы