4

そのようなものを変換する標準的な方法があるかどうか知りたい

@GenericGenerator(name = "generator", strategy = "foreign", parameters = @Parameter(name = "property", value = "user"))
@Id
@GeneratedValue(generator = "generator")
@Column(name = "id", unique = true, nullable = false)
public Integer getId() {
    return this.id;
}

ハイバネートなしの標準JPA 2モデルへ

編集:両方のエンティティを見てみましょう(注釈付きの興味深い部分のみを保持しています)

@Entity
@Table(name = "author", catalog = "test")
public class Author implements java.io.Serializable {

    @GenericGenerator(name = "generator", strategy = "foreign", parameters = @Parameter(name = "property", value = "user"))
    @Id
    @GeneratedValue(generator = "generator")
    @Column(name = "id", unique = true, nullable = false)
    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @OneToOne(fetch = FetchType.LAZY)
    @JsonBackReference
    @PrimaryKeyJoinColumn
    public User getUser() {
        return this.user;
    }

@Entity
@Table(name = "user", catalog = "test")
public class User implements java.io.Serializable {
    @OneToOne(fetch = FetchType.LAZY, mappedBy = "user")
    public Author getAuthor() {
        return this.author;
    }
4

2 に答える 2

2

おそらく、それらのエンティティにまったく同じ ID を持たせたいと思うでしょう。その場合は、Author クラスを追加するだけです

 @OneToOne @MapsId
        public User getUser() {
        return this.user;
    }

@MapsId注釈はそのトリックを行います。そこで確認できますhttp://docs.oracle.com/javaee/6/api/javax/persistence/OneToOne.html (例 2)

于 2013-12-13T20:50:41.983 に答える
1

私は JPA モデルのみを使用しているため、これがシリアル (シーケンス) にリンクされているかどうかはわかりません。その場合、次のようになります。

@Entity
@Table(name = "project", schema = "a_schema" )
@SequenceGenerator(name = "project_id_seq_generator", sequenceName = "a_schema.project_id_sequence")
public class MyObject {

    @Id @GeneratedValue(strategy = GenerationType.AUTO, generator = "project_id_seq_generator")
    @Column(name = "project_id")
    private Long projectID;
//...
}

お役に立てれば!

于 2012-10-23T20:35:14.663 に答える