Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Jpa共享主键_Java_Spring_Hibernate_Jpa - Fatal编程技术网

Java Spring Jpa共享主键

Java Spring Jpa共享主键,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我想从我的用户表中共享我的帐户主键。因此,我提出: @Entity @Table(name = "user") public class User implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "user_id") pr

我想从我的
用户
表中共享我的
帐户
主键。因此,我提出:

@Entity
@Table(name = "user")
public class User implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "user_id")
    private int userId;

    @OneToOne(mappedBy = "user", cascade = CascadeType.ALL)
    private Account account;
}

这是我保存新帐户时的代码。

User user= userService.get(1);
Account account = new Account();
account.username("Loi");
account.password("mypass");

contact.setAccount(account);
account.setUser(contact);

accountService.save(account);

然后我得到了这个例外

org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: com.amashub.tc.models.User; nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist: com.amashub.tc.models.User
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:276)
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:221)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:417)
    at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)
    at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodIntercceptor.invoke(CrudMethodMetadataPostProcessor.java:122)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
    at com.sun.proxy.$Proxy65.save(Unknown Source)

我在哪里丢失了?

您正在保存帐户,但级联选项仅在用户端定义。我认为它对用户没有任何作用,只能从用户处获取外键的引用。那么,您为什么不试试看!!是的,我做了,我保存了用户,然后帐户也保存了,没有错误。我还是不明白这里分离物体的意思。分离对象是与数据库断开连接的对象。它不是级联,那么为什么不忽略用户呢?正如我所建议的:当帐户被保存时,用户被分离,因为您没有在关系帐户>用户-仅从用户>帐户上指定级联。如果添加级联,则在保存帐户时,将首先保存用户,然后保存帐户。显然,如果不这样做,您将得到一个错误,因为帐户的主键依赖于用户,因此必须先保存用户。您正在保存帐户,但级联选项仅在用户端定义。我认为它不会对用户做任何事情,而是从用户处获取外键的引用。那么,您为什么不试试看!!是的,我做了,我保存了用户,然后帐户也保存了,没有错误。我还是不明白这里分离物体的意思。分离对象是与数据库断开连接的对象。它不是级联,那么为什么不忽略用户呢?正如我所建议的:当帐户被保存时,用户被分离,因为您没有在关系帐户>用户-仅从用户>帐户上指定级联。如果添加级联,则在保存帐户时,将首先保存用户,然后保存帐户。显然,如果不这样做,您将得到一个错误,因为帐户的主键依赖于用户,所以必须首先保存用户。
org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: com.amashub.tc.models.User; nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist: com.amashub.tc.models.User
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:276)
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:221)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:417)
    at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)
    at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodIntercceptor.invoke(CrudMethodMetadataPostProcessor.java:122)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
    at com.sun.proxy.$Proxy65.save(Unknown Source)