I have next hierarchy of classes/entities
{code:java} @Entity @Table(name = "Users") @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public abstract class User implements Serializable {
@Id @Column(name = "UserID", unique = true, nullable = false) @GeneratedValue(strategy = GenerationType.AUTO) private Long userId; }
@Entity @Table(name = "Tasks") public class Task implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "TaskID", unique = true, nullable = false) private Long taskId;
@OneToMany(mappedBy = "task", fetch = FetchType.LAZY, cascade = CascadeType.ALL) private Set<UserTask> users; }
@Entity @Table(name = "RegularUsers") public class RegularUser extends User {
@OneToMany(mappedBy = "regularUser", fetch = FetchType.LAZY, cascade = CascadeType.ALL) private Set<UserTask> tasks; }
@Entity @Table(name = "UserTask") public class UserTask implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "UserTaskID", unique = true, nullable = false) private Long userTaskId;
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "UserID_FK", referencedColumnName = "UserID") private RegularUser regularUser;
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "TaskID_FK", referencedColumnName = "TaskID") private Task task; } {code}
In code above I've skipped all the setters, getters and constructors.
When I run application, hibernate creates tables with all required columns but doesn't create constraint for foreign key for next field in table UserTask. {code:java} @JoinColumn(name = "UserID_FK", referencedColumnName = "UserID") private RegularUser regularUser; {code}
Nevertheless constraint for the field "private Task task;" is being created successfully. In the execution output I see
{code:java} Hibernate: create table RegularUsers ( UserID numeric(19,0) not null, primary key (UserID) ) Hibernate: create table Tasks ( TaskID numeric(19,0) not null, primary key (TaskID) ) Hibernate: create table UserTask ( UserTaskID numeric(19,0) not null, UserID_FK numeric(19,0), TaskID_FK numeric(19,0), primary key (UserTaskID) ) Hibernate: alter table RegularUsers add constraint UK_n68f0rf3bjbec7ril2q103g10 unique (UserID) Hibernate: alter table UserTask add constraint FKiguctfwkdscbv8l409lnbcfna foreign key (TaskID_FK) references Tasks {code} I use update hbm2ddl.auto property
{code:java} <property name="hibernate.hbm2ddl.auto"> update </property> {code} |
|