私は2つのテーブルを持っています:
CREATE TABLE `addr1` (
`id` int(11) DEFAULT NULL,
`addr2` varchar(20) DEFAULT NULL
) ENGINE=InnoDB;
CREATE TABLE `address` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`address` varchar(250) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
の主キーはaddr1
アドレステーブルから設定されます。結合継承を使用してエンティティを作成しました
@Entity
@Table(name="addr1")
public class Addr1 extends Address {
@Column(name="addr2")
private String addr2;
// getters and setters follows
}
@Entity
@Table(name = "address")
@Inheritance(strategy=InheritanceType.JOINED)
public class Address implements Serializable {
@Id
@GeneratedValue
@Column(name = "id")
private int id;
@Column(name = "address", nullable = false, length = 250, insertable = true)
private String address;
// getters and setters follows
}
これで、アドレス テーブルに ID 2 の行が作成されました。addr1 テーブルに同じ ID (2) の行を挿入したいと考えています。私は試していた
Address addr = em.getReference(Address.class, new Integer(4));
Addr1 addr1 = new Addr1(addr);
addr1.setAddr2("dsdsd");
em.persist(addr1);
しかし、私はエラーが発生しています
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: 切り離されたエンティティが永続化に渡されました: Addr1
私を助けてください。
よろしく、 プラヴィーン