БД Я хочу использовать что-то вроде:Hibernate: использование рк другого субъекта как рк дает org.hibernate.MappingException: Не удалось определить тип ошибок,
Таблица Пользователь: User_ID ...
User_Action Таблица: User_ID (Ф.К. к User.User_ID, должен быть один-к-одному) ...
Так у меня есть этот класс:
@Entity
@Table(name="User")
public class User {
private long _ID;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "User_ID", nullable = false, unique = true)
public long get_ID() {
return _ID;
}
public void set_ID(long user_ID) {
_ID = user_ID;
}
...
}
и в другом классе, у меня есть:
@Entity
@Table(name="User_Action")
public class UserAction implements IEntity {
private User _user;
@Id
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "User_ID")
public User get_user() {
return _user;
}
public void set_user(User _user) {
this._user = _user;
}
...
}
Однако выполнение кода выдает следующее сообщение об ошибке в момент инициализации:
org.hibernate.MappingException: Could not determine type for: mycustom.User, for columns: [org.hibernate.mapping.Column(_user)]
org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:266)
org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:253)
org.hibernate.mapping.RootClass.validate(RootClass.java:193)
org.hibernate.cfg.Configuration.validate(Configuration.java:1099)
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1284)
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
...
Версии Hibernate я использую являются:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.6.7.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>3.3.0.ga</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.3.1.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.3.2.GA</version>
</dependency>
Я подозревал, что что-то не так с annoticationConfiguration, но не в состоянии подтвердить или отлаживать .. или это что-то еще?
Вы аннотировали свое пользовательское свойство с аннотацией Id. Но эта аннотация может применяться только к определенным типам (подробнее см. Здесь: http://docs.oracle.com/javaee/6/api/javax/persistence/Id.html). Если вы хотите использовать объект в качестве ПК другого лица, взгляните на эту публикацию SO: http://stackoverflow.com/questions/904634/using-and-entity-and-their-primary-key-as-another- entitys-идентификатор. –