gpt4 book ai didi

java - Spring-data-jpa OneToOne 单向问题

转载 作者:太空宇宙 更新时间:2023-11-04 14:33:28 25 4
gpt4 key购买 nike

我试图在两个类“Restaurant”和“Manager”之间建立单向一对一关系。 “Manager”是一个子类,它有一个名为restaurantId 的属性。这是我的代码,下面解释了问题:

餐厅.java:

    @Entity
public class Restaurant implements Serializable{

@Id
private long id;


//getters and setters}

RestaurantRepository.java

import java.util.List;

import org.springframework.data.repository.CrudRepository;

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

Manager.java:

@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 的添加方法:

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 表中添加条目。

这是 eclipse 中的控制台错误:

    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

请帮帮我。任何建议都会很棒。:)

最佳答案

您可能正在尝试添加具有已存在 ID 的条目

您可能忘记自动递增 ID,或者您为经理/餐厅选择了无效(已存在)的 ID。

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

关于java - Spring-data-jpa OneToOne 单向问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25863678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com