Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > OneToOne +


Автор: lat 21.7.2009, 14:01
Разбираюсь с Hibernate. Застрял на двух этапах. Помогите с решением.

1. Связь между таблицами:

Предположим есть две таблицы: 
Код


Server (int serverid, String name, int port, int host) и DopParam(int id, int serverid, java.util.Properties param)



Таблица Server связанна с DopParam через поле serverid, тип связи один-к-одному.

Server

Код


<hibernate-mapping>

  <class name="Server " table="server">  
  
    <id      column="serverid"    name="ServerID"                type="java.lang.Integer"/>    
    <one-to-one name="DopParam"    class="DopParam"    cascade="save-update,delete" />        
    <property column="name"        name="Name"            type="java.lang.String" />
    <property column="host"    name="Host"            type="java.lang.String" />    
    <property column="port"    name="Port"            type="java.lang.Integer" />

  </class>
  
</hibernate-mapping>



Код


@Entity                    
@Table(name = "server") 
public class Server {

    public Server(){
    }
    
    @Id    
    private int serverid;

    public int getServerID() {
         return serverid;
    }

    public void setServerID(int serverid) {
        this.serverid= serverid;
    }

    @Basic
    @Column(name = "name")

    private String name;

    
    public String getName() {
         return name;
    }

    public void setName(String name) {
         this.name = name;
    }
    ...
}



Правильно ли сервак оформлен?

DopParam

Код

... тут у меня идеи и закончились ... =)


Как описать DopParam?  

2. Как работать с java.util.Properties в Hibernate (как, что и куда прописывать)?


PS: А можно обойтись одними аннотациями, без файлов <hibernate-mapping> ? Аннотации ведь повторят инфо нагрузку <hibernate-mapping> ...

<--- Случайно отправил пост раньше чем нужно. Не успел тему написать полностью. Просьба модераторам исправить на "OneToOne + java.util.Properties" --->

Автор: lat 21.7.2009, 14:58
Цитата(lat @  21.7.2009,  14:01 Найти цитируемый пост)
PS: А можно обойтись одними аннотациями, без файлов <hibernate-mapping> ? Аннотации ведь повторят инфо нагрузку <hibernate-mapping> ...


Выяснил, что можно. 
Можно без аннотация но с файлом маппинга, или без файла маппинга но с элементом <mapping class="pack.Server" /> в секции <hibernate-configuration>.

Остальные вопросы пока актуальны (принимаются варианты как с аннт-й так и без неё, мне главное суть понять).

Автор: lat 21.7.2009, 15:32
Цитата(lat @  21.7.2009,  14:01 Найти цитируемый пост)
2. Как работать с java.util.Properties в Hibernate (как, что и куда прописывать)?


Код


@Type(type = "java.util.Properties")
    @Column(name = "param")
    private Properties param;
    
    public Properties getParam() {
         return param;
    }
    public void setParam(Properties param) {
         this.param = param;
    }  



Такс, осталось только разобраться с "один-к-одному" ...

Автор: lat 21.7.2009, 16:05
Не было времени ждать ответов, решил задачу сам:

Цитата(lat @  21.7.2009,  15:32 Найти цитируемый пост)
Такс, осталось только разобраться с "один-к-одному" ...


Server
Код

...
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn(name = "serverid", referencedColumnName = "paramid")
private DopParam dopparam;
...


Пол часа - полет нормальный. Если будут замечания или предложения по улучшению кода - пишите в ПМ.
Тему закрываю.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)