Hibernate - 一张表有多个实体?

bun*_*112 5 java hibernate blob lazy-loading

我有一个Picture

public class Picture implements java.io.Serializable {

    private byte[] picEncoded;
    private String Name;
    //etc
Run Code Online (Sandbox Code Playgroud)

是否可以移动byte[]到另一个类而不在 db 中创建物理分隔的表?我需要使用一些继承策略吗?

编辑

单独实体中的 Blob:

pojo :

 public class PictureBlob implements java.io.Serializable {
        private Integer pictureBlobId;
        private byte[] blob;
Run Code Online (Sandbox Code Playgroud)

hbm: :

<class name="PictureBlob" table="PICTURE">

<id name="pictureBlobId" type="int">
  <column length="200" name="PictureID"/>      
</id>

<property name="blob" type="byte[]" insert="false" update="false">
  <column name="PicEncoded" not-null="false"/>
</property>
</class>
Run Code Online (Sandbox Code Playgroud)

图片:

hbm: :

  <one-to-one class="PictureBlob" constrained="true" name="pictureBlob" fetch="select"/>
Run Code Online (Sandbox Code Playgroud)

如何插入新图片?

PictureBlob pictureBlob= new PictureBlob();
        pictureBlob.setBlob(new byte[]{84,32,22});
        Picture p = new Picture();
        p.setPictureBlob(pictureBlob);           
        session.save(p);
Run Code Online (Sandbox Code Playgroud)

插入 blob 值为空的记录。

bva*_*sen 1

我认为你可以使用这样的东西:

<class name="Picture">
    <id name="id">
      <generator class="native"/>
    </id>
    <property name="name"/>

    <component name="pictureBlob" class="PictureBlob">
       <property name="pictureBlobId"/>
       <property name="blob"/>
       <property name="picture"/>
    </component>
</class>
Run Code Online (Sandbox Code Playgroud)

这可能需要一些编辑,但想法是这样的:你有一Picture堂课。该类具有type属性name和属性。pictureBlobPictureBlob

component标签指示组件内的属性映射到同一个表Picture