Я использую datanucleus/MySQL5.6/Google App Engine1.9.4/JDO3.0/Spring3.0.JDO пытается создать новую запись при связывании с использованием отношения один к большому числу
Ситуация, у меня есть класс пользователей
@PersistenceCapable(table="Users")
public class User {
@PrimaryKey
@Persistent(column="UserID", valueStrategy=IdGeneratorStrategy.NATIVE)
private Long ID;
//some more fields below
}
У меня есть класс UserSession
@PersistenceCapable(table="usersessions")
public class UserSession extends DomainObject {
private static final long serialVersionUID = 1L;
@PrimaryKey
@Persistent(column="SessionID", valueStrategy=IdGeneratorStrategy.NATIVE)
private Long ID;
@Persistent
@Column(name="UserID")
private User user;
}
У меня есть один ко многим отношения между User
к UserSession
. В таблице UserSession я определил внешний ключ, ссылающийся на userid (первичный ключ) таблицы User.
Я создал запись пользователя, когда пользователь впервые регистрируется.
Каждый пользователь регистрируется. Я создаю запись UserSession в базе данных. Я могу успешно создать пользовательскую запись в БД. Когда пользователь регистрируется, я создаю объект UserSession, связывая ранее полученный объект User с объектом UserSession.
Когда я сохраняю UserSession, он пытается создать новую запись пользователя в базе данных.
Я только хочу связать существующую запись пользователя с вновь созданным объектом UserSession.
Я не хочу иметь двунаправленную связь один-ко-многим.
Ниже приведен код для создания объекта UserSession,
@Override
@Transactional(propagation = Propagation.REQUIRED)
public UserSession createSession(User user, String sessionId) {
PersistenceManager pm = persistenceManagerFactory.getPersistenceManager();
try {
UserSession userSession = new UserSession();
userSession.setAppSession(sessionId);
userSession.setUser(user);
pm.makePersistent(user);
return userSession;
} finally {
pm.close();
}
}
Пожалуйста, помогите. Спасибо заранее.
и «пользователь» находится в состоянии жизненного цикла? отдельностоящий? переходная? долбить? Без такой информации я не понимаю, как вы ее понимаете. Журнал говорит? –
Я получил пользователя, используя persistenceManager, который затем закрыт. Затем я пытаюсь создать объект UserSession, используя другой persistenceManager. Я думаю, что теперь объект пользователя находится в переходном состоянии. И журнал говорит, запрос терпит неудачу, потому что он пытается снова вставить объект пользователя, и он терпит неудачу из-за уникального ограничения. – Thirupathi