Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring hibernate不持久化对象节点_Java_Spring_Hibernate_Jpa - Fatal编程技术网

Java Spring hibernate不持久化对象节点

Java Spring hibernate不持久化对象节点,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我拥有以下实体: @Entity public class Pages { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; @OneToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) @JoinColumn(name="page") private List<Pages_lang> pages_lang; pr

我拥有以下实体:

@Entity
public class Pages {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;

@OneToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
@JoinColumn(name="page")
private List<Pages_lang> pages_lang;

private long updated;
private Boolean deleted = false;
private long position;
private String icon;

@OneToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY, mappedBy = "parent")
private List<Pages> children;

@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Pages parent;
还有这个:

@Entity
public class Pages_lang {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "language")
    private Language language;

    private String title;

    @Column(name = "text", columnDefinition = "TEXT")
    private String text;

    @Column(name = "plaintext", columnDefinition = "TEXT")
    private String plaintext;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)//, mappedBy = "articles_lang")
    @JoinColumn(name = "pages_lang")
    private List<Images> images;
当我使用此方法在DB中持续创建时,它不会出现任何问题:

@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<String> postPageTopLevel(@RequestBody Pages posted) {
Pages inserted = new Pages();
inserted.merge(posted);

Pages result = dao.save(inserted);

HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setLocation(ServletUriComponentsBuilder
        .fromCurrentRequest().path("/" + result.getId())
        .buildAndExpand(result.getId()).toUri());

return new ResponseEntity<String>(getGson().toJson(result), httpHeaders, HttpStatus.CREATED);
}
但是,当我想更新Pages_lang对象的属性并持久化Page对象时,该属性不会在数据库中修改

在这里,要更新的方法是:

@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public ResponseEntity<String> putPage(@PathVariable Long id, @RequestBody Pages puted) {
    System.out.println("");System.out.println("");System.out.println("");System.out.println("");System.out.println("");System.out.println("");

    if (id != puted.getId())
        return new ResponseEntity<String>("URI unmatch element", new HttpHeaders(), HttpStatus.FORBIDDEN);

    Pages page = dao.findOne(id);
    if (page == null)
        return new ResponseEntity<String>(null, new HttpHeaders(), HttpStatus.NOT_FOUND);

    dao.save(puted);

    return new ResponseEntity<String>(getGson().toJson(puted), new HttpHeaders(), HttpStatus.OK);
}
我认为问题与Pages对象中Pages_lang属性的级联类型有关

有人能帮我吗

问候

编辑:

save方法是Spring存储库中包含的基本方法

BaseRepository.java

@NoRepositoryBean
public interface BaseRepository<T, ID extends Serializable> extends Repository<T, ID> {

void delete(T deleted);

Iterable<T> findAll();

T findOne(ID id);

T save(T persisted);

Iterable<T> save(Iterable<T> persited);
}

首先,尝试将id更改为Long。习惯上使用空值表示尚未持久化,原语可能会发生奇怪的事情。我倾向于怀疑声明cascade=CascadeType.PERSIST,而不是在映射Pages.Pages\u lang时使用更广泛的级联规范,但这取决于Pages实例的出处和dao.save的行为,您还没有介绍。您好,我尝试将id改为Long而不是Long,但问题仍然存在。