首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringDataJpa多对一提供空。

SpringDataJpa多对一提供空。
EN

Stack Overflow用户
提问于 2014-07-29 21:12:13
回答 1查看 83关注 0票数 0

我对我的实体有意见。我的交易是在这两个实体之间建立多对一的联系。我就是这样做的:

代码语言:javascript
复制
User user = new User();
    user.setName("a");
    user.setLastName("b");
    Set<Adress> a = new HashSet<Adress>();
    Adress a1 = new Adress();
    Adress a2 = new Adress();
    a1.setCity("a1");
    a2.setCity("a2");
    a.add(a1);
    a.add(a2);
    user.setAdress(a);
    userProxy.save(user);

我的胆子:

代码语言:javascript
复制
@Entity
public class User {

@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Long id;

@NotNull
private String name;

@NotNull
private String lastName;

@OneToMany(mappedBy="user", cascade=CascadeType.ALL)
private Set<Adress> adress = new HashSet<Adress>();

public User(String name, String lastName) {
    this.name = name;
    this.lastName = lastName;
}

public User() {

}

public Set<Adress> getAdress() {
    return adress;
}

public void setAdress(Set<Adress> adress) {
    this.adress = adress;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

public Long getId() {
    return id;
}
}

第二实体

代码语言:javascript
复制
@Entity
public class Adress {
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
private Long id;

private String city;

@ManyToOne
@JoinColumn(name="user_id")
private User user;

public String getCity() {
    return city;
}

public void setCity(String city) {
    this.city = city;
}

public Long getId() {
    return id;
}

}

表用户中的数据保存得很好,但是在表入口字段中,user_id是"NULL“,有人能向我解释为什么吗?我尝试了很多@ManyToOne的组合,但是对我来说没有什么效果。

有关更多细节,UserProxy:

代码语言:javascript
复制
@Service
public class UserProxyDao {

private UserDao userDao;

@Autowired
public UserProxyDao(UserDao userDao) {
    this.userDao = userDao;
}

public void save(User user) {
    userDao.save(user);
}
}

但是,如果我将@NotNull放在字段用户的附件中,实体验证将失败.我真的不知道为什么

代码语言:javascript
复制
Caused by: javax.validation.ConstraintViolationException: validation failed for classes [pl.rd.j2ee.api.domain.Adress] during persist time for groups [javax.validation.groups.Default, ]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-30 18:25:25

只要你先做这件事,你就应该能够在一个动作中做到这一点。

代码语言:javascript
复制
a1.setUser(user);
a2.setUser(user);

您可以始终将User添加到您的Address构造函数中,并在那里执行。

代码语言:javascript
复制
public Address (User user) {
    this.user = user;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25025068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档