JPA。两个实体之间使用什么样的关系。 (无法从一个实体中删除记录)

时间:2014-09-14 11:55:06

标签: java-ee jpa mapping entity entity-relationship

我在寻找一些信息后写信给你,但由于英语不是我的第一语言,我可能错过了我的问题的答案。

描述: 我有两个实体。假设其中一个是User,另一个是UsersAttributes。 用户将如下所示:

@Entity
@NamedQueries({
    //some queries
})
public class User implements Serializable
{

    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    private Long id;
    @ManyToMany
    private List<UserAttributes> attributes;

    //getters, setters, constructors, equals, hashCode..
}

然后是 UserAttributes 实体:

@Entity
@NamedQueries({
    //some queries
})
public class UserAttributes implements Serializable
{
    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    private Long id;

    @NotNull
    private String Name;
    //getters, setters, constructors, equals, hashCode..
}

我想要的效果是: 用户是该关系的拥有方。 UserAttributes 是(我不知道我是否正确调用)字典 - 来自此实体的值可由用户<的任何对象使用/ strong>实体。例如,

user1  has UserAttributes 1,2
user2  has UserAttributes 2,3
user3  has UserAttributes 1,2,3
user4  has no UserAttributes

(我希望UserAttributes记录可以重复使用)

我写的代码工作得很好,实体之间的值分配得很好,但是

When I want to remove a record from UserAttributes I can't do it if it is already 
in possesion of some User. How to solve this, what kind of mapping I should use, 
should I used **cascade** attribute, and how to do this?

1 个答案:

答案 0 :(得分:0)

首先,谢谢 JB Nizet

征求意见。 我想我已经通过使用mappedBy属性解决了它。在UserAttributes中,我添加了这个:

@ManyToMany(mappedBy="attributes")
private List<User> users;

在用户中我没有改变任何东西。现在我可以删除属性&#34;无论如何&#34;来自用户实体,并且所有记录都会传播更改,并且没有例外。