Java JpaSystemException не может выполнить оператор

Я хочу добавить нового пользователя в БД. Когда я создавал db ID был установлен как автоинкремент, а не null (адрес электронной почты, пароль также)

Вот мой пользователь:

@Entity
@Table(name = "user")
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class User{

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@NotNull
@JsonIgnore
@Column(name = "password")
private String password;

@NotNull
@Email
private String email;

@Column(name = "phone_number")
private String phoneNumber;



@JsonIgnore
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id",insertable = false,updatable = false)
private RoleDAO roleDAO;

@JsonManagedReference
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<Ticket> tickets;

Пользователь относится к другому объекту RoleDAO. Итак, следующий код

РольDAO:

@Entity
@Table(name = "roles")
public class RoleDAO {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

@Column(name = "role")
private String role;


@OneToMany(mappedBy = "roleDAO")
private List<User> users;

у меня есть:

"exception": "org.springframework.orm.jpa.JpaSystemException",
"message": "could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement",

Любая идея?

ОБНОВЛЕНО

2018-05-04 15:09:57.775 ERROR 5012 --- [nio-8088-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.orm.jpa.JpaSystemException: could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement] with root cause



java.sql.SQLException: Field 'role' doesn't have a default value
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964) ~[mysql-connector-java-5.1.40.jar:5.1.40]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970) ~[mysql-connector-java-5.1.40.jar:5.1.40]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906) ~[mysql-connector-java-5.1.40.jar:5.1.40]
    at com.mysql.jdb
c.MysqlIO.sendCommand(MysqlIO.java:2524) ~[mysql-connector-java-5.1.40.jar:5.1.40]
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) ~[spring-aop-4.3.5.RELEASE.jar:4.3.5.RELEASE]
    at com.sun.proxy.$Proxy108.save(Unknown Source) ~[na:na]
    at com.edsson.expopromoter.api.service.UserService.create(UserService.java:52) ~[classes/:na]
    at com.edsson.expopromoter.api.controller.AuthController.registration(AuthController.java:74) ~[classes/:na]
    at com.edsson.expopromoter.api.controller.AuthController$$FastClassBySpringCGLIB$$a58f74db.invoke(<generated>) ~[classes/:na]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410) [tomcat-embed-core-8.5.6.jar:8.5.6]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.6.jar:8.5.6]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_60]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_60]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.6.jar:8.5.6]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_60]

это появляется после

 RoleDAO roleDAO = roleService.findRoleDAOByRole(RolesConfiguration.ROLE_USER);
 userService.create(new User(registrationRequest.getEmail(),registrationRequest.getPassword(), roleDAO  ));

Я добавил полную трассировку стека. Это появляется, когда я вызываю userRepository.save, который внутри userService.create

Один способ исправить

Добавьте значение по умолчанию для этого столбца в db. У моего пользователя значение по умолчанию ROLE_User. Итак, я вставил это.

Я все еще хочу знать другие разрешения

Какая у вас БД? Oracle или MySQL?

Mạnh Quyết Nguyễn 04.05.2018 16:56

Это Mysql DB //

artemk 04.05.2018 16:57

Можете ли вы опубликовать полную трассировку стека на своем сервере?

Mạnh Quyết Nguyễn 04.05.2018 17:01

Извините, но я не знаю, как получить полную трассировку стека. Эту ошибку я получаю от почтового метода / регистрации почтальона в качестве ответа.

artemk 04.05.2018 17:05

У вас есть локальный сервер? Затем откройте консоль сервера / файл журнала, чтобы прочитать исключение.

Mạnh Quyết Nguyễn 04.05.2018 17:09

Добавлен, но не полностью

artemk 04.05.2018 17:17

Казалось бы, таблица USER или одна из таблиц, соответствующих связанному объекту, имеет столбец role, не допускающий значения NULL, и вы не указали значение для этого столбца. Кстати, что такое RoleDao, и почему его столбец соединения называется id?

crizzis 04.05.2018 17:21

RoleDAO - это таблица сущностей для "роли". Пользователь имеет внешний ключ "роль", это относится к таблице ролей-> идентификатор поля.

artemk 04.05.2018 17:27

Я снова отредактировал. пожалуйста, проверьте

artemk 04.05.2018 17:30

Это относится к вашему классу RoleDAO. Пожалуйста, разместите это здесь

Mạnh Quyết Nguyễn 04.05.2018 17:34

Размещено, проверьте пожалуйста.

artemk 04.05.2018 17:36

Вы проверили поле role в своей базе данных? Это может быть ноль?

Mạnh Quyết Nguyễn 04.05.2018 17:43

он указан как notNull в БД. Я уже пробовал добавить аннотацию @NotNull к сущности RoleDAO. Проблема была та же

artemk 04.05.2018 17:44

Вы проверяли значение role в roleDao, возвращенном из roleService.findRoleDAOByRole(RolesConfiguration.ROLE_USER)? Похоже, он недоступен, и база данных не знает, какое значение установить.

Ram 06.05.2018 12:46

Возвращает действительное значение

artemk 08.05.2018 10:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
15
2 408
0

Другие вопросы по теме