Как связывать таблицы в Hibernate?

306
08 августа 2017, 14:15

Добрый день, в очередной раз попал в тупик и не знаю как быть, помогите плиззз есть две таблицы, использую spring и hibernate

@Entity
@Table(name = "cwd_user")
public class cwd_user {
    @Id
    @Column(name = "ID")
    private int id;
    @Column(name = "user_name")
    private String user_name;
    @Column(name = "display_name")
    private String display_name;
    @OneToMany
    @JoinColumn(name = "author")
    private Set<Worklog> worklog;
    //гетеры и сеттеры
}
@Entity
@Table(name = "worklog")
public class Worklog {
    @Id
    @Column(name = "ID")
    @GeneratedValue
    private Integer id;
    @Column(name = "AUTHOR")
    private String author;
    @Column(name = "STARTDATE")
    private Date startdate;
    @Column(name = "timeworked")
    private int timeworked;
    @ManyToMany
    @JoinColumn(name = "user_name")
    private cwd_user cwd_user;
    //геттеры и сеттеры
}

Мне нужно связать их по полям worklog.author = cwd_user.user_name, но перечитав много статей, у меня так и не вышло ничего

Помогите пожалуйста, как правильно указать аннотацию и так же, как правильно в самом запросе писать inner join? нужно ли писать from worklog w inner join cwd_user s on w.author = s.user_name?

причем мне нужно из cwd_user вывести display_name, а из worklog вывести timeworked и startdate. И вывести все на веб-страницу

Сделал вот так(связь Один ко многим, то есть в таблице cwd_user только одно значение) В класс таблицы cwd_user добавил аннотацию @OneToMany

@OneToMany(mappedBy = "cwduser", fetch = FetchType.LAZY)
private Set<Worklog> worklogList;
public Set<Worklog> getWorklog() {
    return worklogList;
}
public void setWorklog(Set<Worklog> worklogList) {
    this.worklogList = worklogList;
}

в класс Worklog

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "user_name")
private cwd_user cwduser;
public cwd_user getCwd_user() {
    return cwduser;
}
public void setCwd_user(cwd_user cwduser) {
    this.cwduser = cwduser;
}

Запустил тестирование на запросе from Worklog l where l.author =, пишет java.sql.SQLException: Invalid column name 'user_name'.

Запустил с запросом from Worklog l inner join cwd_user c on l.author = c.user_name where l.author = пишет org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1, column 80 [from domain.Worklog l inner join cwd_user c on l.author = c.user_name where l.author =

Кто может помочь, помогите понять

READ ALSO
Обработка EditText и передача в БД

Обработка EditText и передача в БД

Подскажите, как я могу считать данные с EditText и прогнать их через метод в другом классе?

295
Как разрешить ввод тэга &lt;i&gt; в TinyMCE

Как разрешить ввод тэга <i> в TinyMCE

В моей cms есть настройка с adminareasettingsricheditoradditionalsettings и значением settings

324
Как увеличить зону клика ссылки?

Как увеличить зону клика ссылки?

Использую ползунок (input type range)Дело в том, что по макету он в 1px и все идеально, только вот кликнуть по нему очень сложно, надо попасть в этом...

331