【发布时间】:2012-12-02 19:50:11
【问题描述】:
我有:
@Entity
public class EmailAndName {
...
}
和
@Entity
public class MessageDetails {
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "MessageDetails_to")
public Set<EmailAndName> getTo() {
return to;
}
}
当我
public static void main(String []a)
{
StatelessSession sess = HibernateUtils.getSessionFactory().openStatelessSession();
sess.beginTransaction();
MessageDetails messageDetails = new MessageDetails();
messageDetails.setTo(new HashSet<EmailAndName>());
EmailAndName emailAndName = (EmailAndName) sess.get(EmailAndName.class, 1L);
if (emailAndName == null ) throw new RuntimeException();
messageDetails.getTo().add(emailAndName);
sess.insert(messageDetails);
sess.getTransaction().commit();
}
MessageDetails_to 表未填充。我该怎么办?我不想编写本机查询。谢谢。
【问题讨论】:
-
能否提供详细的表结构?
-
我知道你说过你不想编写原生查询,但我发现在无状态会话中填充多对多关联表的唯一方法(从而受益于无状态会话)。即
sess.CreateSQLQuery("insert into MessageDetails_to (...) values (:id1, id2).SetParameter... etc.