相关疑难解决方法(0)

属性包括/排除Kotlin数据类

假设我只想在生成的equals和hashCode实现中包含一个或两个字段(或者可能排除一个或多个字段).对于一个简单的类,例如:

data class Person(val id: String, val name: String)
Run Code Online (Sandbox Code Playgroud)

Groovy有这个:

@EqualsAndHashCode(includes = 'id')
Run Code Online (Sandbox Code Playgroud)

龙目岛有这个:

@EqualsAndHashCode(of = "id")
Run Code Online (Sandbox Code Playgroud)

在Kotlin这样做的惯用方法是什么?

到目前为止我的方法

data class Person(val id: String) {
   // at least we can guarantee it is present at access time
   var name: String by Delegates.notNull()

   constructor(id: String, name: String): this(id) {
      this.name = name
   }
}
Run Code Online (Sandbox Code Playgroud)

虽然感觉不对......我真的不想name变成可变的,额外的构造函数定义很难看.

kotlin

27
推荐指数
5
解决办法
6767
查看次数

JPA:java.lang.StackOverflowError在实体类中添加toString方法

一切正常,直到我添加toSting()到我的实体类中.

之后我开始在运行时收到以下错误:

Exception in thread "main" java.lang.StackOverflowError
    at java.lang.AbstractStringBuilder.append(Unknown Source)
    at java.lang.StringBuilder.append(Unknown Source)
    at java.lang.StringBuilder.<init>(Unknown Source)
    at entity.Guide.toString(Guide.java:51)
    at java.lang.String.valueOf(Unknown Source)
    at java.lang.StringBuilder.append(Unknown Source)
    at entity.Student.toString(Student.java:45)
        ...
Run Code Online (Sandbox Code Playgroud)
@Entity
public class Teacher {

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

    private String name;

    @OneToMany(mappedBy="teacher", cascade={CascadeType.PERSIST})
    private Set<Student> students = new HashSet<Student>(); 

    public Teacher() {}
    public Teacher(String name) {
        this.name = name;
    }

    public Set<Student> getStudents() {
        return students;
    }       
    public void addStudent(Student student) {
        students.add(student);
        student.setTeacher(this);
    }
    @Override
    public String toString() …
Run Code Online (Sandbox Code Playgroud)

stack-overflow hibernate tostring jpql jpa-2.1

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

hibernate ×1

jpa-2.1 ×1

jpql ×1

kotlin ×1

stack-overflow ×1

tostring ×1