저는 Hibernate를 처음 사용하기 때문에이 실망한 문제를 다루고 있습니다. 두 클래스가 있습니다 : Location
및 Address
. Address
은 엔터티이며 Location
기본 키에 외래 키가 있습니다. 그래서 여기 Location
OneToOne을 업데이트 한 후 NullPointerException이 발생했습니다.
public class Location implements Serializable {
//Rest of code omitted
@OneToOne(mappedBy = "location", cascade = CascadeType.ALL)
public Address getAddress() {
return address;
}
}
및 Address
public class Address implements Serializable {
//Rest of code ommitted
@OneToOne
@JoinColumn(name = "LOCATION_FK")
public Location getLocation() {
return location;
}
}
나는 위치 개체의 주소를 업데이트하기 위해 노력하고있어입니다하지만 내가 추측 일이 아닙니다.
public void updateAddress(Location location, Address address) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
tx.begin();
Location persistedLocation = (Location) session.get(Location.class, location.getId());
Address persistedAddress = persistedLocation.getAddress();
session.delete(persistedAddress);
persistedLocation.setAddress(address);
tx.commit();
session.close();
}
여기 내 단위 테스트 내가 잘못 뭐하는 거지
//Setting variables
Location location = new Location();
Address address = new Address("123456", "TOWN", "CITY", 12345);
LocationDAO instance = new LocationDAO();
//Add the first location
boolean result = instance.addLocation(location, address);
assertTrue(result);
//Get it back from database
Location persistedLocation = instance.getLocations().get(0);
assertEquals(location.getAddress().getAddressLine(), persistedLocation.getAddress().getAddressLine());
Address newAddress = new Address("987654321", "Chicago", "IL", 11234);
instance.updateAddress(persistedLocation, newAddress);
persistedLocation = instance.getRentalLocations().get(0);
//Fails on the line below
//assertEquals(newAddress.getAddressLine(), persistedLocation.getAddress().getAddressLine());
입니까? 감사합니다.
당신이 더 도움이 될 수 있어요 예외 스택 트레이스 :
당신은 당신의 DAO에이 줄을해야합니다. – Lion
@Lion ok one sec – Andy