|
Объединение сущностей Hibernate
|
|||
---|---|---|---|
#18+
Добрый день! Подскажите, пожалуйста, разбирающиеся в hibernate. Суть задачи следующая: БД PostgreSQL. Есть две сущности: @Entity @Table(name = "tplan") @Cacheable @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_ONLY) @XmlRootElement @XmlAccessorType(XmlAccessType.PROPERTY) @NamedQueries({ @NamedQuery(name = "Tplan.findAll", query = "SELECT t FROM Tplan t")}) public class Tplan implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "id") private Integer id; @Size(max = 2) @Column(name = "gp") private String gp; @Size(max = 2) @Column(name = "kodn") private String kodn; @Size(max = 120) @Column(name = "itxt") private String itxt; @Column(name = "kodb") private Character kodb; @Column(name = "nstr") private Short nstr; @Column(name = "skp") private Short skp; @Column(name = "kolp") private Short kolp; @Size(max = 3) @Column(name = "lgot") private String lgot; @Size(max = 6) @Column(name = "kv") private String kv; @Size(max = 16) @Column(name = "klov") private String klov; @Column(name = "pnts") private Integer pnts; @Size(max = 2) @Column(name = "mkl") private String mkl; @Column(name = "pr_f16") private Character prF16; public Tplan() { } public Tplan(Integer id) { this.id = id; } // Getters - Setters @Override public int hashCode() { int hash = 0; hash += (id != null ? id.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Tplan)) { return false; } Tplan other = (Tplan) object; if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { return false; } return true; } @Override public String toString() { return "integrator_local.Tplan[ id=" + id + " ]"; } } @Entity @Table(name = "lgot") @XmlRootElement @NamedQueries({ @NamedQuery(name = "Lgot.findAll", query = "SELECT l FROM Lgot l")}) public class Lgot implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "id") private Integer id; @Size(max = 2) @Column(name = "gos") private String gos; @Size(max = 2) @Column(name = "gosdlg") private String gosdlg; @Size(max = 3) @Column(name = "lgot") private String lgot; @Column(name = "kp") private Character kp; @Column(name = "datan") @Temporal(TemporalType.DATE) private Date datan; @Column(name = "dataot") @Temporal(TemporalType.DATE) private Date dataot; @Size(max = 5) @Column(name = "snazv") private String snazv; @Column(name = "nommv") private Short nommv; @Size(max = 6) @Column(name = "lname") private String lname; @Size(max = 2) @Column(name = "nmu1") private String nmu1; @Size(max = 2) @Column(name = "nmu2") private String nmu2; @Size(max = 3) @Column(name = "gr") private String gr; @Size(max = 5) @Column(name = "nmopl") private String nmopl; @Size(max = 2) @Column(name = "gp") private String gp; @Size(max = 4) @Column(name = "sub") private String sub; @Size(max = 3) @Column(name = "sub8") private String sub8; @Column(name = "pr_pzd") private Character prPzd; @Size(max = 3) @Column(name = "lsp") private String lsp; @Column(name = "vz1") private Short vz1; @Column(name = "vz2") private Short vz2; @Size(max = 2) @Column(name = "nmud1") private String nmud1; @Size(max = 2) @Column(name = "nmud2") private String nmud2; @Size(max = 64) @Column(name = "akt") private String akt; public Lgot() { } public Lgot(Integer id) { this.id = id; } // // Getters Setters // @Override public int hashCode() { int hash = 0; hash += (id != null ? id.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Lgot)) { return false; } Lgot other = (Lgot) object; if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { return false; } return true; } @Override public String toString() { return "integrator_local.Lgot[ id=" + id + " ]"; } } Из них нужно сделать связанную сущность по полям (связь ManyToMany) tplan.gp=lgot.gp tplan.lgot=lgot.lgot Можно ли это реализовать? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 13:02 |
|
Объединение сущностей Hibernate
|
|||
---|---|---|---|
#18+
Малахит, Поиск примера много ко многим в тырнете. Делается через промежуточную таблу в бд. Но это не сущность. Техническая табла связи. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 13:23 |
|
Объединение сущностей Hibernate
|
|||
---|---|---|---|
#18+
PetroNotC SharpМалахит, Поиск примера много ко многим в тырнете. Делается через промежуточную таблу в бд. Но это не сущность. Техническая табла связи. Спасибо за ответ! Я гуглил этот вариант, но вопрос тогда в следующем - эта *промежуточная таблица* может быть закеширована через Infinispan? Если описать глубже суть задачи, то есть веб-сервис, который выдает по запросу результат связки этих таблиц в XML, предварительно его закешировав через Infinispan, поскольку содержание таблиц меняется редко. При выдаче по одной таблице все работает хорошо, сущность кешируется и выбирается из кеша. Но вот возникла задача сделать выдачу из нескольких таблиц... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 13:44 |
|
Объединение сущностей Hibernate
|
|||
---|---|---|---|
#18+
Малахит, Не надо зря оптимизировать. Докажи что тормозит, и только потом включаем второй кеш или оптимизируем. Все это из коробки. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 14:25 |
|
|
start [/forum/topic.php?fid=59&fpage=23&tid=2121140]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
84ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 240ms |
total: | 430ms |
0 / 0 |