У меня сейчас 2 объекта, один из них POST
, а другой - POST_DETAIL
. POST_DETAIL
one хранит другой перевод POST
.
(упрощенно) POST
схема:
- ID NUMBER
(упрощенно) POST_DETAIL
схема:
- ID NUMBER
- REF_ID NUMBER # FK to POST.ID
- LANG VARCHAR
- TITLE VARCHAR
Я хотел бы иметь ТОЛЬКО один из (скажем, английского) POST_DETAIL
внутри POST
с аннотацией Hibernate
class Post {
...
// annotations
private PostDetail postDetailEn;
}
Любая помощь приветствуется
EDIT:
Я надеюсь сделать что-то вроде
class Post {
...
@OneToOne(mappedBy = "post")
@JoinColumn(name = "ID", referencedColumnName = "REF_ID",
insertable = false, updatable = false)
@Where(clause = "POST_DETAIL.LANG = 'EN'") // not working
@WhereJoinTable(clause = "POST_DETAIL.LANG = 'EN'") // not working
private PostDetail postDetailEn;
}
class PostDetail {
...
@OneToOne
@JoinColumn(name = "REF_ID", insertable = false, updatable = false)
@Where(clause = "LANG = 'EN'") // not working
@WhereJoinTable(clause = "LANG = 'EN'") // not working
private Post post;
@Column(name = "REF_ID")
private Long refId;
@Column(name = "LANG")
private String lang;
}
но sql, зарегистрированный hibernate, ничего не показал для предложения where
РЕДАКТИРОВАТЬ: например:
записей в базе данных
+-----------+ +-----------------+ +-----------------+
| Post (#1) | | PostDetail (#1) | | PostDetail (#2) |
+-----------+ | refId: 1 | | refId: 1 |
| lang : EN | | lang : EN |
+-----------------+ +-----------------+
Я хочу получить
Post(id=1,
postDetail=PostDetail(id=1,
refId=1,
lang=EN))