Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.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 在@Entity类的setter中调用方法_Java_Spring_Hibernate_Jpa - Fatal编程技术网

Java 在@Entity类的setter中调用方法

Java 在@Entity类的setter中调用方法,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我只需要将名字和姓氏输入属性ownerName,对我来说,最好的解决方案是,如果我在conversationOwner的setter中为ownerName调用setter,但是我得到了一个错误: Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: Exception occurred inside

我只需要将名字和姓氏输入属性
ownerName
,对我来说,最好的解决方案是,如果我在
conversationOwner
的setter中为
ownerName
调用
setter,但是我得到了一个错误:

Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: Exception occurred inside setter of medictonproject.model.ConversationEntity.conversationOwner
以下是实体类:

import com.fasterxml.jackson.annotation.JsonIgnore;
import org.hibernate.annotations.*;
import org.hibernate.annotations.CascadeType;

import javax.persistence.*;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

@Entity
@Table(name = "conversation", schema = "swprojekt")
public class ConversationEntity {
    private int conversationId;
    private String title;
    private Timestamp beginningDate;
    @JsonIgnore
    private UserEntity conversationOwner;
    private String ownerName;
    @JsonIgnore
    private List<MessageEntity> messages = new ArrayList<>();
    private MessageEntity firstMessage;
    private boolean seen;

    @Transient
    public MessageEntity getFirstMessage() {
        return firstMessage;
    }

    public void setFirstMessage(MessageEntity firstMessage) {
        this.firstMessage = firstMessage;
    }

    @Transient
    public boolean isSeen() {
        return seen;
    }

    public void setSeen( boolean seen ) {
        this.seen = seen;
    }

    @OneToMany(mappedBy="conversation", cascade = javax.persistence.CascadeType.ALL)
    public List<MessageEntity> getMessages() {
        return messages;
    }

    public void setMessages(List<MessageEntity> messages) {
        this.messages = messages;
    }

    @ManyToOne(fetch=FetchType.LAZY, cascade = javax.persistence.CascadeType.ALL)
    @JoinColumn(name="user_id")
    public UserEntity getConversationOwner() {
        return conversationOwner;
    }

    public void setConversationOwner(UserEntity conversationOwner) {
        this.conversationOwner = conversationOwner;
        setOwnerName();
    }

    @Transient
    public String getOwnerName() {
        return ownerName;
    }

    public void setOwnerName() {
        this.ownerName = conversationOwner.getFirstName() + " " + conversationOwner.getLastName();
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "conversation_id", nullable = false)
    public int getConversationId() {
        return conversationId;
    }

    public void setConversationId(int conversationId) {
        this.conversationId = conversationId;
    }

    @Basic
    @Column(name = "title", nullable = false, length = 200)
    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    @Basic
    @Column(name = "beginning_date", nullable = false)
    public Timestamp getBeginningDate() {
        return beginningDate;
    }

    public void setBeginningDate(Timestamp beginningDate) {
        this.beginningDate = beginningDate;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        ConversationEntity that = (ConversationEntity) o;

        if (conversationId != that.conversationId) return false;
        if (title != null ? !title.equals(that.title) : that.title != null) return false;
        if (beginningDate != null ? !beginningDate.equals(that.beginningDate) : that.beginningDate != null)
            return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = conversationId;
        result = 31 * result + (title != null ? title.hashCode() : 0);
        result = 31 * result + (beginningDate != null ? beginningDate.hashCode() : 0);
        return result;
    }
}
import com.fasterxml.jackson.annotation.JsonIgnore;
导入org.hibernate.annotations.*;
导入org.hibernate.annotations.CascadeType;
导入javax.persistence.*;
导入javax.persistence.Entity;
导入javax.persistence.Table;
导入java.sql.Timestamp;
导入java.util.ArrayList;
导入java.util.List;
@实体
@表(name=“conversation”,schema=“swprojekt”)
公共类会话实体{
私有int会话ID;
私有字符串标题;
私有时间戳开始日期;
@杰索尼奥雷
私有用户实体会话所有者;
私有字符串所有者名称;
@杰索尼奥雷
私有列表消息=新的ArrayList();
私有消息实体第一消息;
私有布尔函数;
@短暂的
public MessageEntity getFirstMessage(){
返回第一条消息;
}
public void setFirstMessage(MessageEntity firstMessage){
this.firstMessage=firstMessage;
}
@短暂的
公共布尔值isSeen(){
回头看;
}
公共void setSeen(见布尔值){
这是被看见的;
}
@OneToMany(mappedBy=“conversation”,cascade=javax.persistence.CascadeType.ALL)
公共列表getMessages(){
返回消息;
}
公共消息(列出消息){
this.messages=消息;
}
@manytone(fetch=FetchType.LAZY,cascade=javax.persistence.CascadeType.ALL)
@JoinColumn(name=“user\u id”)
公共用户实体getConversationOwner(){
返回会话所有者;
}
public void setConversationOwner(用户实体conversationOwner){
this.conversationOwner=conversationOwner;
setOwnerName();
}
@短暂的
公共字符串getOwnerName(){
返回所有者名称;
}
public void setOwnerName(){
this.ownerName=conversationOwner.getFirstName()+“”+conversationOwner.getLastName();
}
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“conversation\u id”,null=false)
public int getConversationId(){
返回会话ID;
}
public void setConversationId(int conversationId){
this.conversationId=conversationId;
}
@基本的
@列(name=“title”,null=false,长度=200)
公共字符串getTitle(){
返回标题;
}
公共无效集合标题(字符串标题){
this.title=标题;
}
@基本的
@列(name=“开始日期”,null=false)
公共时间戳GetBeginingDate(){
返回开始日期;
}
public void setBeginningDate(时间戳beginningDate){
this.beginningDate=开始日期;
}
@凌驾
公共布尔等于(对象o){
如果(this==o)返回true;
如果(o==null | | getClass()!=o.getClass())返回false;
会话实体,即=(会话实体)o;
如果(conversationId!=that.conversationId)返回false;
如果(title!=null?!title.equals(that.title):that.title!=null)返回false;
如果(beginningDate!=null?!beginningDate.equals(that.beginningDate):that.beginningDate!=null)
返回false;
返回true;
}
@凌驾
公共int hashCode(){
int结果=会话ID;
result=31*result+(title!=null?title.hashCode():0);
result=31*result+(beginningDate!=null?beginningDate.hashCode():0);
返回结果;
}
}

“setter内部发生异常”。。。但例外是什么?您使用的是Hibernate而不是EclipseLink,因此我在我的项目(EntityManager)中更改了tagsI我使用Eclipse链接。例外是什么?在setter
setConversationOwner(UserEntity conversationOwner)
中,我正在调用
setOwnerName()
,它以某种方式抛出异常如果您使用EclipseLink,请解释“org.hibernate.propertyAccesseException”?这是Hibernate JPA吗?还是休眠验证器?还是怎样我不知道什么是真正的例外,因为你没有发布它。做一个“e.printStackTrace”,并在你的问题中发布完整的堆栈跟踪