Spring Security ошибка при сохранении юзера

299
16 сентября 2017, 23:31

Здравствуйте! Подскажи, пожалуйста, у меня мысли плывут .. Использую Spring Data, Security. При регистрации юзер указывает свои имя и пароль. Я пытаюсь к этому всему добавить стандартную картинку, путь которой лежит в отдельной ячейке(по ид - 1), отдельной таблицы в бд. В таблице юзеров есть поле image_id, которое связанно внешним ключем с картинками.(Дальше кину код). Если делать без участия картинки, то регистрация проходит успешно. Собственно проблема в том, что я до конца не понимаю как должна связь произойти таблицы юзера и картинки. Как правильно? При создании юзера, отдельно создать картинку, заранее ее вписать в бд, и потом сдлать user.set(image), или достаточно просто создать картинку и сделать сет? И такой же точно вопрос, но если пользователь уже существует.

Пожалуйста, помогите, это крик души)

Вот часть кода, где выскакивает ешибка:

     Image image = imageDAO.getOne(1L);
     System.out.println(image.getPath());

Вот мой ImageDAO

public interface ImageDAO extends JpaRepository<Image, Long> {
Image findByPath(String path);

}

public interface ImageService {
void save(Image image);
Image findByPath(String path);

}

public class ImageSeviceImpl implements ImageService{
@Autowired
private  ImageDAO imageDAO;
@Autowired
private UserDao userDao;
@Override
public void save(Image image) {
    imageDAO.save(image);
}
@Override
public Image findByPath(String path) {
    return imageDAO.findByPath(path);
}

}

Возможно нужно сами классы сущностей дать.

@Entity
@Table(name = "images")
public class Image {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "path")
private String path;
@OneToOne(mappedBy = "image")
private UserEntity user;

@Entity
@Table(name = "users")
public class UserEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "username")
protected String username;
@Column(name = "password")
protected String password;
@Column(name = "email")
protected String email;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "image_id")
protected Image image;
@Column(name = "about")
protected String about;

и сам код ошибки

org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: com.chat.my.model.Image; nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist: com.chat.my.model.Image
org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:210)
org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:155)
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:417)
org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)
org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodIntercceptor.invoke(CrudMethodMetadataPostProcessor.java:122)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
com.sun.proxy.$Proxy44.save(Unknown Source)
com.chat.my.service.UserServiceImpl.save(UserServiceImpl.java:43)
com.chat.my.controller.UserController.registration(UserController.java:65)

Код ошибки:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.LazyInitializationException: could not initialize proxy - no Session
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
READ ALSO
@Query с оператором OR

@Query с оператором OR

У меня есть такой метод:

277
Java Jpa One To Many Problems [требует правки]

Java Jpa One To Many Problems [требует правки]

I have problem with extracting dataI have next entities

238
Как поменять родительный падеж в temporals.format(&hellip;)?

Как поменять родительный падеж в temporals.format(…)?

Использую Thymeleaf и при выводе месяца, он почему-то выводится в родительном падеже, и я никак не могу понять почему

298
javascript функция игнорирует условие в if

javascript функция игнорирует условие в if

Есть некая js консоль на тестируемом сервисе с описанием объектов и куском кода в котором необходимо менять условие в зависимости от требованийВ...

225