首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring-data-jpa OneToOne单向问题

Spring-data-jpa OneToOne单向问题
EN

Stack Overflow用户
提问于 2014-09-16 16:10:22
回答 1查看 1.1K关注 0票数 1

我试图有一个单向的OneToOne关系b/w两个类别“餐厅”和“经理”。"Manager“是一个子类,它有一个名为restaurantId的属性。下面是我的代码和问题的解释:

Restaurant.java:

代码语言:javascript
复制
    @Entity
    public class Restaurant implements Serializable{

         @Id
         private long id;


    //getters and setters}

RestaurantRepository.java

代码语言:javascript
复制
import java.util.List;

import org.springframework.data.repository.CrudRepository;

public interface RestaurantRepository extends CrudRepository<Restaurant, Long> {
    List<Restaurant> findById(long id);
}

Manager.java:

代码语言:javascript
复制
@Entity
public class Manager implements Serializable {



    @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        private long id;
        @OneToOne(fetch=FetchType.LAZY,optional=false,cascade = CascadeType.ALL)
        @JoinColumn(name="restaurantId", referencedColumnName="id",nullable=false)
        private Restaurant restaurantId;

        //getters and setters}

我正尝试在下面的测试类中测试Manager.java的add方法:

代码语言:javascript
复制
public class ManagerTest {

    private CrudRepository repository;
    @Test
    public void testAddManager() {
        AbstractApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

        CrudRepository restaurantRepository = context.getBean(RestaurantRepository.class);

        Date date = new Date();
        Restaurant restaurant = (Restaurant) restaurantRepository.findOne(1L);
        repository = context.getBean(ManagerRepository.class);
        createManager("x","xx","xxxxxxxx","x","x","x","India","null","null", date, "jimish@auberginesolutions.com", restaurant);

        context.close();

    }

    private void createManager(String firstName, String lastName, String contactNo, String addrStreet,String addrCity, String addrState, String addrCountry, String addrLat, String addrLong, Date birthDate, String email, Restaurant restaurant){
        Manager manager = new Manager(firstName, lastName, contactNo, addrStreet, addrCity, addrState, addrCountry, addrLat, addrLong, birthDate, email);
        manager.setRestaurantId(restaurant);
        repository.save(manager);

    }
}

使用上面的代码,我期望在Manager表中有一个新的条目,但它试图在Restaurant table中创建条目。

下面是eclipse中的控制台错误:

代码语言:javascript
复制
    Hibernate: insert into Restaurant (addrCity, addrCountry, addrLat, addrLong, addrState, addrStreet, contactNo, maxCapacity, name, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Sep 16, 2014 2:24:20 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1062, SQLState: 23000
Sep 16, 2014 2:24:20 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Duplicate entry '1' for key 'PRIMARY'
Sep 16, 2014 2:24:20 PM org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl release
INFO: HHH000010: On release of batch it still contained JDBC statements

请帮帮我。任何建议都可以。:)

EN

回答 1

Stack Overflow用户

发布于 2014-09-16 16:38:06

您可能正在尝试使用已存在的id添加条目

您可能忘记了AUTO_INCREMENT id,或者为您的经理/餐厅选择了一个无效的(已经存在的) id。

您可以在Error Code: 1062. Duplicate entry '1' for key 'PRIMARY'上找到更多详细信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25863678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档