powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Сохранение сущности с составным ключом @IdClass
25 сообщений из 31, страница 1 из 2
Сохранение сущности с составным ключом @IdClass
    #39533962
apprentice-novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть сущность Пользователи компаний.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
@Entity
@Table(name = "Users_companies")
@IdClass(UsersCompaniesId.class)
public class UsersCompanies extends ObjectMapper implements DomainObject {
    @Id
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="company_id")
    Company company;

    @Id
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="user_id")
    User user;

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

    @Column(name="registration")
    @Temporal(TemporalType.TIMESTAMP)
    private Date reg;

    public Company getCompany() {
        return company;
    }

    public void setCompany(Company company) {
        this.company = company;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public String getPosition() {
        return position;
    }

    public void setPosition(String position) {
        this.position = position;
    }

    public Date getReg() {
        return reg;
    }

    public void setReg(Date reg) {
        this.reg = reg;
    }

    @PrePersist
    protected void onCreate() {
        reg = new Date();
    }

    @Override
    public String toString() {
        return "UsersCompanies{" +
                "company=" + company.getName() +
                ", user=" + user.getUsername() +
                ", position='" + position + '\'' +
                ", reg=" + reg +
                '}';
    }
}


и клас ключа

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
public class UsersCompaniesId implements DomainObject{
    private Company company;
    private User user;

    public Company getCompany() {
        return company;
    }

    public void setCompany(Company company) {
        this.company = company;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public String toString() {
        return "UserCompaniesId{" +
                "company=" + company.getName() +
                ", user=" + user.getUsername() +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof UsersCompaniesId)) return false;

        UsersCompaniesId that = (UsersCompaniesId) o;

        if (!getCompany().equals(that.getCompany())) return false;
        return getUser().equals(that.getUser());

    }

    @Override
    public int hashCode() {
        int result = getCompany().hashCode();
        result = 31 * result + getUser().hashCode();
        return result;
    }
}



и ДАО

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@Repository
public interface UsersCompaniesDao extends JpaRepository<UsersCompanies, UsersCompaniesId>,
                JpaSpecificationExecutor<UsersCompanies>,
                PagingAndSortingRepository<UsersCompanies, UsersCompaniesId>
{
    UsersCompanies findByUser(User user);

    UsersCompanies findByUserAndCompany(User user, Company company);
}



Все было хорошо пока не произошёл мерж проекта. После этого прикола при сохранении начала появляться ошибка при сохранении следующего плана

Код: java
1.
2.
3.
4.
Caused by: java.lang.IllegalStateException: Cannot convert value of type [java.lang.Long] to required type [com.konex.servapp.entity.user.User] for property 'user': no matching editors or conversion strategy found
	at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:306) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:576) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	... 155 common frames omitted
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39533982
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apprentice-noviceи ДАО
Код: java
1.
@Repository



DAO и Repository это разные паттерны.

Все было хорошо пока не произошёл мерж проекта. После этого прикола при сохранении начала появляться ошибка при сохранении следующего плана

apprentice-noviceCaused by: java.lang.IllegalStateException: Cannot convert value of type [java.lang.Long] to required type [com.konex.servapp.entity.user.User] for property 'user': no matching editors or conversion strategy found
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:306) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
Подозреваю что ошибка к JPA отношения не имеет. Покажите более полный stacktrace. Возможно она на уровне Spring MVC возникает?
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534055
apprentice-novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type [java.lang.Long] to required type [com.konex.servapp.entity.user.User] for property 'user'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.Long] to required type [com.konex.servapp.entity.user.User] for property 'user': no matching editors or conversion strategy found
at org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:591) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.AbstractNestablePropertyAccessor.convertForProperty(AbstractNestablePropertyAccessor.java:603) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.AbstractNestablePropertyAccessor.setPropertyValue(AbstractNestablePropertyAccessor.java:449) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.AbstractNestablePropertyAccessor.setPropertyValue(AbstractNestablePropertyAccessor.java:260) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.data.util.DirectFieldAccessFallbackBeanWrapper.setPropertyValue(DirectFieldAccessFallbackBeanWrapper.java:73) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation$IdentifierDerivingDirectFieldAccessFallbackBeanWrapper.setPropertyValue(JpaMetamodelEntityInformation.java:340) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.getId(JpaMetamodelEntityInformation.java:162) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
at org.springframework.data.repository.core.support.AbstractEntityInformation.isNew(AbstractEntityInformation.java:51) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.isNew(JpaMetamodelEntityInformation.java:225) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:505) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_131]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_131]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_131]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131]
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:503) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:488) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:460) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:61) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) ~[spring-tx-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) ~[spring-tx-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) ~[spring-tx-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) ~[spring-tx-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:133) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at com.sun.proxy.$Proxy137.save(Unknown Source) ~[na:na]
at com.konex.servapp.service.UsersCompaniesServiceImpl.save(UsersCompaniesServiceImpl.java:44) ~[classes/:na]
at com.konex.servapp.service.UsersCompaniesServiceImpl$$FastClassBySpringCGLIB$$c70b7d68.invoke(<generated>) ~[classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) ~[spring-tx-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) ~[spring-tx-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) ~[spring-tx-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at com.konex.servapp.service.UsersCompaniesServiceImpl$$EnhancerBySpringCGLIB$$b450cbbf.save(<generated>) ~[classes/:na]
at com.konex.servapp.controller.UserController.addPositionToUser(UserController.java:1006) ~[classes/:na]
at com.konex.servapp.controller.UserController.employeeRegister(UserController.java:976) ~[classes/:na]
at com.konex.servapp.controller.UserController$$FastClassBySpringCGLIB$$e1677538.invoke(<generated>) ~[classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:651) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at com.konex.servapp.controller.UserController$$EnhancerBySpringCGLIB$$2a2bcea7.employeeRegister(<generated>) ~[classes/:na]
at com.konex.servapp.controller.UserController$$FastClassBySpringCGLIB$$e1677538.invoke(<generated>) ~[classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at com.konex.servapp.controller.UserController$$EnhancerBySpringCGLIB$$b3d74f35.employeeRegister(<generated>) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_131]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_131]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_131]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) ~[spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) ~[spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114) ~[spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) ~[spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) ~[spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) ~[spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) ~[spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) ~[spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [javax.servlet-api-3.1.0.jar:3.1.0]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [javax.servlet-api-3.1.0.jar:3.1.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) [tomcat-embed-core-8.5.5.jar:8.5.5]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [tomcat-embed-core-8.5.5.jar:8.5.5]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-embed-websocket-8.5.5.jar:8.5.5]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [tomcat-embed-core-8.5.5.jar:8.5.5]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [tomcat-embed-core-8.5.5.jar:8.5.5]
at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [tomcat-embed-core-8.5.5.jar:8.5.5]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [tomcat-embed-core-8.5.5.jar:8.5.5]
at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:105) [spring-boot-actuator-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [tomcat-embed-core-8.5.5.jar:8.5.5]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [tomcat-embed-core-8.5.5.jar:8.5.5]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:121) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534067
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsersCompaniesServiceImpl.save() можно посмотреть?
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534070
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apprentice-novice,

Вот тут пишут странное
https://stackoverflow.com/questions/39185977/failed-to-convert-request-element-in-entity-with-idclass
Мол согласно JPA спеке в композитном ключе не может быть ассоциаций. Что ИМХО, как-то тупо. Композитные ключи зачастую FK и используют. Я сам когда-то давно так делал на хибере.
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534072
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
У него вроде классика много ко много.
Тут обязателен класс ключа?
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534073
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apprentice-novice,

Так на вскидку не понятно. Я бы подебажил весь стэк спринга от UsersCompaniesServiceImpl.save() до искдлючения чтобы понять откуда он вообще Long взял. Но вообще странно что у вас UsersCompanies->User два раза замаплена. Один раз в ID, а второй раз в самом UsersCompanies
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534079
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apprentice-novice,

http://www.objectdb.com/java/jpa/entity/id#Composite_Primary_Key_
А ещё мне не очень понятно почему у класса Id нет аннотаций.
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534080
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Blazkowicz,
У него вроде классика много ко много.
Тут обязателен класс ключа?
Вот классика many to many
https://docs.oracle.com/javaee/7/api/javax/persistence/ManyToMany.html
а не то что у ТС
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534094
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczа не то что у ТС
Аффтар! Дай таблички базы. Может я и ошибаюсь и Пользоаатель - компании у тебя другое отношение. Ты его не озвучил.
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534136
apprentice-novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
@Entity
@Table(name = "Users")
public class User implements DomainObject, UserDetails{

    @Id
    @Column(name = "user_id")
    @SequenceGenerator(name = "users_seq", sequenceName = "users_seq", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "users_seq")
    private Long id;

    @Column(name = "login", unique = true)
//    @NotBlank
    @Size(min = 4, max = 32, message = "Логін повинен бути від 4 до 32 символів")
    private String username;

    @Column(name = "password")
//    @NotBlank
    @Size(min = 4, message = "Пароль повинен бути від 4 символів")
    private String password;

    @Transient
//    @Size(min = 4, message = "Пароль повинен бути від 4 символів")
    private String confirmPassword;

    @Transient
    private String captcha;

    @Transient
    private String confirmCaptcha;

    public String getCaptcha() {
        return captcha;
    }

    public void setCaptcha(String captcha) {
        this.captcha = captcha;
    }

    public String getConfirmCaptcha() {
        return confirmCaptcha;
    }

    public void setConfirmCaptcha(String confirmCaptcha) {
        this.confirmCaptcha = confirmCaptcha;
    }

    @Column(name = "user_PIB")
    @Size(min = 4, max = 150, message = "ПІБ повинен бути більше 4 символів")
    private String userPIB;

    @Column(name = "email", unique = true)
//    @Email
    private String eMail;

    @Column(name = "mobile")
//    @NotBlank
    @Size(min = 10, max = 14, message = "Телефон повинен бути від 10 до 14 символів")
    private String mobile;

    @Column(name = "birthday")
//    @NotNull
    @Past
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
    private Date birthday;

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

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

    @Column(name = "reg_time")
    @Temporal(TemporalType.TIMESTAMP)
    private Date regTime;

    @PrePersist
    protected void onCreate() {
        regTime = new Date();
    }

//    @PreUpdate
//    protected void onUpdate() {
//        regTime = new Date();
//    }

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

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

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

    @Column(name = "rating")
//    @NotNull
    private Float rating;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "User_type")
    private UserType userType;

    @ManyToMany
    @JoinTable(
            name = "users_roles",
            joinColumns = @JoinColumn(
                    name = "user_id", referencedColumnName = "user_id"),
            inverseJoinColumns = @JoinColumn(
                    name = "role_id", referencedColumnName = "role_id"))
    private Set<Role> roles;

    @ManyToMany
    @JoinTable(name = "users_companies",
            joinColumns = @JoinColumn(
                    name = "user_id", referencedColumnName = "user_id"),
            inverseJoinColumns = @JoinColumn(
                    name = "company_id", referencedColumnName = "company_id"))
    private Set<Company> companies;

    public Set<Company> getCompanies() {
        return companies;
    }

    public void setCompanies(Set<Company> companies) {
        this.companies = companies;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", userPIB='" + userPIB + '\'' +
                ", eMail='" + eMail + '\'' +
                ", mobile='" + mobile + '\'' +
                ", birthday=" + birthday +
                ", sex=" + sex +
                ", avatara='" + avatara + '\'' +
                ", regTime=" + regTime +
                ", confirmed=" + confirmed +
                ", updated=" + updated +
                ", userType=" + userType +
                ", roles=" + roles +
                ", password='" + password + '\'' +
                ", confirmPassword='" + confirmPassword + '\'' +
                ", captchas='" + captcha + '\'' +
                ", confirmCaptcha='" + confirmCaptcha + '\'' +
                '}';
    }

    public String toCompactString() {

        return "User[ " +
                "id: " + id +
                ", name: " + username +
                ", PIB: " + userPIB +
                ", eMail: " + eMail +
                ", mobile: " + mobile +
                ", birthday: " + String.format("%1$te-%1$tm-%1$tY", birthday) +
                ", sex: " + sex +
                ", regTime: " + regTime +
                ", confirmed: " + confirmed +
                ", updated: " + updated +
                ", avatara: " + avatara +
                ", enabled: " + enabled +
                " ]";
    }
    public Long getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return enabled;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        Set<GrantedAuthority> grantedAuthorities = new HashSet<>();

        for (Role role : this.getRoles()) {
            grantedAuthorities.add(new SimpleGrantedAuthority(role.getName()));
        }
        return grantedAuthorities;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getConfirmPassword() {
        return confirmPassword;
    }

    public void setConfirmPassword(String confirmPassword) {
        this.confirmPassword = confirmPassword;
    }

    public Set<Role> getRoles() {
        return roles;
    }

    public void setRoles(Set<Role> roles) {
        this.roles = roles;
    }

    public String getUserPIB() {
        return userPIB.trim();
    }

    public void setUserPIB(String userPIB) {         this.userPIB = userPIB;    }

    public String geteMail() {
        return eMail;
    }

    public void seteMail(String eMail) {
        this.eMail = eMail;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public Boolean getSex() {
        return sex;
    }

    public void setSex(Boolean sex) {
        this.sex = sex;
    }

    public String getAvatara() {
        return avatara;
    }

    public void setAvatara(String avatara) {
        this.avatara = avatara;
    }

    public Date getRegTime() {
        return regTime;
    }

    public void setRegTime(Date regTime) {
        this.regTime = regTime;
    }

    public Boolean getConfirmed() {
        return confirmed;
    }

    public void setConfirmed(Boolean confirmed) {
        this.confirmed = confirmed;
    }

    public Boolean getUpdated() {
        return updated;
    }

    public void setUpdated(Boolean updated) {
        this.updated = updated;
    }

    public Float getRating() {
        return rating;
    }

    public void setRating(Float rating) {
        this.rating = rating;
    }

    public void changeRating(Float rating) {
        this.rating += rating;
    }

    public UserType getUserType() {
        return userType;
    }
//    public String getUserType() {
//        return userType.getName();
//    }
    public void setUserType(UserType userType) {
        this.userType = userType;
    }

    public static User getCurrentUser() {
        return (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    }

    public static Long getCurrentUserId() {
        User u = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        return u.getId();
    }

    public static boolean isAnonymous() {
        // Метод SecurityContextHolder.getContext().getAuthentication().isAuthenticated()
        // нічого не дасть, оскільки анонімний користувач теж вважається авторизованим
        return "anonymousUser".equalsIgnoreCase(SecurityContextHolder.getContext().getAuthentication().getName());
    }

    public Boolean getEnabled() {
        return enabled;
    }

    public void setEnabled(Boolean enabled) {
        this.enabled = enabled;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof User)) return false;

        User user = (User) o;

        if (getId() != null ? !getId().equals(user.getId()) : user.getId() != null) return false;
        if (getUsername() != null ? !getUsername().equals(user.getUsername()) : user.getUsername() != null)
            return false;
        if (getPassword() != null ? !getPassword().equals(user.getPassword()) : user.getPassword() != null)
            return false;
        if (getConfirmPassword() != null ? !getConfirmPassword().equals(user.getConfirmPassword()) : user.getConfirmPassword() != null)
            return false;
        if (getCaptcha() != null ? !getCaptcha().equals(user.getCaptcha()) : user.getCaptcha() != null) return false;
        if (getConfirmCaptcha() != null ? !getConfirmCaptcha().equals(user.getConfirmCaptcha()) : user.getConfirmCaptcha() != null)
            return false;
        if (getUserPIB() != null ? !getUserPIB().equals(user.getUserPIB()) : user.getUserPIB() != null) return false;
        if (geteMail() != null ? !geteMail().equals(user.geteMail()) : user.geteMail() != null) return false;
        if (getMobile() != null ? !getMobile().equals(user.getMobile()) : user.getMobile() != null) return false;
        if (getBirthday() != null ? !getBirthday().equals(user.getBirthday()) : user.getBirthday() != null)
            return false;
        if (getSex() != null ? !getSex().equals(user.getSex()) : user.getSex() != null) return false;
        if (getAvatara() != null ? !getAvatara().equals(user.getAvatara()) : user.getAvatara() != null) return false;
        if (getRegTime() != null ? !getRegTime().equals(user.getRegTime()) : user.getRegTime() != null) return false;
        if (getConfirmed() != null ? !getConfirmed().equals(user.getConfirmed()) : user.getConfirmed() != null)
            return false;
        if (getUpdated() != null ? !getUpdated().equals(user.getUpdated()) : user.getUpdated() != null) return false;
        if (getEnabled() != null ? !getEnabled().equals(user.getEnabled()) : user.getEnabled() != null) return false;
        if (getRating() != null ? !getRating().equals(user.getRating()) : user.getRating() != null) return false;
        if (getUserType() != null ? !getUserType().equals(user.getUserType()) : user.getUserType() != null)
            return false;
        if (getRoles() != null ? !getRoles().equals(user.getRoles()) : user.getRoles() != null) return false;
        return getCompanies() != null ? getCompanies().equals(user.getCompanies()) : user.getCompanies() == null;

    }

    @Override
    public int hashCode() {
        int result = getId() != null ? getId().hashCode() : 0;
        result = 31 * result + (getUsername() != null ? getUsername().hashCode() : 0);
        result = 31 * result + (getPassword() != null ? getPassword().hashCode() : 0);
        result = 31 * result + (getConfirmPassword() != null ? getConfirmPassword().hashCode() : 0);
        result = 31 * result + (getCaptcha() != null ? getCaptcha().hashCode() : 0);
        result = 31 * result + (getConfirmCaptcha() != null ? getConfirmCaptcha().hashCode() : 0);
        result = 31 * result + (getUserPIB() != null ? getUserPIB().hashCode() : 0);
        result = 31 * result + (geteMail() != null ? geteMail().hashCode() : 0);
        result = 31 * result + (getMobile() != null ? getMobile().hashCode() : 0);
        result = 31 * result + (getBirthday() != null ? getBirthday().hashCode() : 0);
        result = 31 * result + (getSex() != null ? getSex().hashCode() : 0);
        result = 31 * result + (getAvatara() != null ? getAvatara().hashCode() : 0);
        result = 31 * result + (getRegTime() != null ? getRegTime().hashCode() : 0);
        result = 31 * result + (getConfirmed() != null ? getConfirmed().hashCode() : 0);
        result = 31 * result + (getUpdated() != null ? getUpdated().hashCode() : 0);
        result = 31 * result + (getEnabled() != null ? getEnabled().hashCode() : 0);
        result = 31 * result + (getRating() != null ? getRating().hashCode() : 0);
        result = 31 * result + (getUserType() != null ? getUserType().hashCode() : 0);
        result = 31 * result + (getRoles() != null ? getRoles().hashCode() : 0);
        result = 31 * result + (getCompanies() != null ? getCompanies().hashCode() : 0);
        return result;
    }
}
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534143
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Серьёзно? На кучу наводящих вопросов вы вываливаете полотно никому не интересного boilerplate кода?
P.S.: коментарі пишіть українською щоб москалі не зрозуміли
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534147
apprentice-novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczUsersCompaniesServiceImpl.save() можно посмотреть?
все можно
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
    @Override
    @Transactional
    public void save(UsersCompanies usersCompanies) {
        if(usersCompanies!=null) {
            System.out.println(usersCompanies);
            usersCompaniesDao.save(usersCompanies);
        }
    }
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534148
apprentice-novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczСерьёзно? На кучу наводящих вопросов вы вываливаете полотно никому не интересного boilerplate кода?
P.S.: коментарі пишіть українською щоб москалі не зрозуміли

от налякав
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534151
apprentice-novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я думал с сущности будит видно связь
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534152
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczS.: коментарі пишіть українською щоб москалі не зрозуміли
))))
Аффтар!
Изучите кнопк Table когда пишите пост и нарисуйте табличку:
Юзверь имеет) много Организации
Оргвнизация имеет) много юзверей.
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534154
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apprentice-noviceя думал с сущности будит видно связь
Лично мне нет. Я маппинг под базу делаю.
Если маппинг кривой, без базы не узнать.
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534179
apprentice-novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
ок
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534185
apprentice-novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да и структура бд не менял просто мерж проекта произошёл. Даже сейчас все работает со старой версии кода. Так что кривой мапинг можем исключить. И зависимости я тоже проверил один в один.
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534203
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534206
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczapprentice-novice,

https://jira.spring.io/si/jira.issueviews:issue-html/DATAJPA-413/DATAJPA-413.html
Сверьте версии Spring Data, может действительно откатились на более старую с этим багом?
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534219
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apprentice-novice,
Понятно.
У вас много ко много.
Но из за того что в промеж.таблу добавлены 2 поля, мы получили полноценную сущность...
Класс ключа название меня сбило)).
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534582
apprentice-novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczBlazkowiczapprentice-novice,

https://jira.spring.io/si/jira.issueviews:issue-html/DATAJPA-413/DATAJPA-413.html
Сверьте версии Spring Data, может действительно откатились на более старую с этим багом?

Так мы юзаем Boot у него в бомках версии их там точно никто не трогал.
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534598
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apprentice-novice,

Что именно вы подразумеваете под "мержем" проекта кроме вас никто не знает.
...
Рейтинг: 0 / 0
Сохранение сущности с составным ключом @IdClass
    #39534632
apprentice-novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczapprentice-novice,

Что именно вы подразумеваете под "мержем" проекта кроме вас никто не знает.

Все пишут свои части проекта. Эта часть написана мной. После того как был написан еще один фрагмент сделали мерж и этот кусок перестал работать. Ну ни только этот, а все в которых есть сложные ключи реализованные таким способом. Мы конечно при помощи костылей пока дырки по закрывали. Но пришло время решить проблему вот я и ищу вариант решения.
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Сохранение сущности с составным ключом @IdClass
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]