Как реализовать интерфейс Serializable в scala?

У меня есть класс scala, например:

@Entity("users")
class User(@Required val cid: String, val isAdmin: Boolean = false, @Required val dateJoined: Date = new Date() ) {
  @Id var id: ObjectId = _



    @Reference
  val foos = new ArrayList[Foo]

    }

Если бы это был класс Java, я бы просто поставил реализует java.Ио.Сериализуемый, но это не работает в scala. Также является ли foos, как указано выше, частным или государственным?

4 ответов


scala 2.9.x также имеет интерфейс с именем Serializable, вы можете расширить или смешать это. прежде чем 2.9.x @serializable-единственный выбор.


Как использовать объект @serializable scala?

foos является публичным, если не отмечено иначе


вы можете добавить сериализованную аннотацию в свой класс Scala (например, в сущности JPA):

поскольку Serializable является признаком, вы можете смешать его в класс, даже если ваш класс уже расширяет другой класс:

@SerialVersionUID(114L)
class Employee extends Person with Serializable ...

Se подробнее по этой ссылке: https://www.safaribooksonline.com/library/view/scala-cookbook/9781449340292/ch12s08.html


пример класса My Entity (JPA), записанного в scala, используя сериализованные свойства:

import javax.persistence._

import scala.beans.BeanProperty
import java.util.Date

@SerialVersionUID(1234110L)
@Entity
@Table(name = "sport_token")
class Token() extends Serializable {

  @Id
  @SequenceGenerator(name="SPORT_TOKEN_SEQ",catalog="ESPORTES" , sequenceName="SPORT_TOKEN_SEQ", allocationSize=1)
  @GeneratedValue(strategy=GenerationType.SEQUENCE , generator="SPORT_TOKEN_SEQ")
  @BeanProperty
  var id: Int = _

  @BeanProperty
  @Column(name="token")
  var token: String = _

  @BeanProperty
  @Column(name="active")
  var active: Int = _

}