0

私は Hibernate 4.1.0.Final と hibernate-jpa-2.0-api を使用しています。エンティティ マネージャーを使用して OneToMany 関係を持つエンティティを更新する際に問題が発生しています。エンティティは次のとおりです。

@GenericGenerator(name = "uuid-strategy", strategy = "uuid.hex")
@Entity
@Table(name = "cb_organization", uniqueConstraints = {@UniqueConstraint(columnNames={"organization_id"})})
public class Organization implements Serializable
{

    …
    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
    @JoinTable(name = "cb_organization_address",
              joinColumns = @JoinColumn(name = "organization_id"),
              inverseJoinColumns = @JoinColumn(name = "address_id"))
    private List<Address> addresses;

(エンティティ マネージャのマージ メソッドを使用して) エンティティを新しい 1 対多のリストで更新しようとすると、アドレスが保存されません。私はそのようにリストを作成します...

    List<Address> addresses = new ArrayList<Address>();
    addresses.add(address);
    ...
    org.setAddresses(addresses);
    m_orgDao.save(org);

ここに関連するDAOコードがあります...

@Autowired
private EntityManager entityManager;

@Override
public Organization save(Organization organization)
{
    if(StringUtils.isEmpty(organization.getId()))
    {
        entityManager.persist(organization);
    }
    else 
    {
        organization = entityManager.merge(organization);
    }

    return organization;
}

返された組織には、すべてのフィールドが null である住所があります。データが適切に永続化されるようにするには、エンティティ マネージャーとエンティティに対して別の方法で何ができますか?

4

1 に答える 1

1
 @OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST, CascadeType.MERGE})  

それ以外の

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
于 2012-11-12T17:58:02.967 に答える