【问题标题】:Which variables use in JavaFX/Hibernate applicationJavaFX/Hibernate 应用程序中使用哪些变量
【发布时间】:2018-02-16 10:55:54
【问题描述】:

假设我们有一个Entity/Class Person,我想将其填充到 JavaFX 组件的 TableView 中。

我应该填充什么类型的数据 Person 类 - StringSimpleStringProperty

在这两种情况下,我都没有完全得到我想要的。如果我将使用 String 变量,我将无法听到我的 TableView 中所做的任何更改(根据clickMe 的帖子)。另一方面,如果我将使用SimpleStringProperty,我将得到一个异常,即hibernate 无法将SimpleStringProperty 转换为字符串,这是数据库中使用的类型。怎样才能做得更巧妙?

@Entity
public Person {
    private String name;     // or SimpleStringProperty
    private String Surname; // or SimpleStringProperty

    // getter and setters removed to simplify example
}

【问题讨论】:

  • 在 Hibernate 中使用 StringProperty 并使用属性访问(不是字段访问)。 svanimpe.be/blog/properties-jpa.html
  • 你可以告诉 Hibernate 如何将 SimpleStringProperty 变成字符串?见stackoverflow.com/questions/45869207/…stackoverflow.com/questions/34048978/…
  • @Jeutnarg 这看起来有点矫枉过正。只需确保它使用 get/set 方法,而不是尝试直接设置字段。
  • @James_D 是否可以与 SimpleStringProperty 一起使用(它具有 get/setValue,而不是 get/set)?如果是这样,您能否链接一些内容来说明如何告诉属性访问使用 getValue 和 setValue 方法?
  • @Jeutnarg 我假设 OP 遵循标准模式,即public StringProperty nameProperty()public String getName()public void setName(String name)

标签: java hibernate javafx


【解决方案1】:

使用StringProperty,并确保Hibernate 通过get/set 方法访问属性,而不是通过字段本身。 (这指的是使用“属性访问”,而不是“字段访问”。)如果您确保所有注释都放在方法上,而不是字段上,这将自动发生,或者您可以使用@Access(AccessType.PROPERTY) 使其明确:

@Entity
@Access(AccessType.PROPERTY)
public class Person {

    private final StringProperty name = new SimpleStringProperty();
    private final StringProperty surname = new SimpleStringProperty();

    @Column("name") // not needed, just illustrating the annotations, if needed, go here
    public String getName() {
        return nameProperty().get();
    }

    public void setName(String name) {
        nameProperty().get(name);
    }

    public StringProperty nameProperty() {
        return name ;
    }

    // etc...
}

完整的讨论请参见http://svanimpe.be/blog/properties-jpa.html

【讨论】:

  • 我们不需要实现 Serializable 接口,因为它向我显示警告:Entity 或 IdClass 类应该实现可序列化接口。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
  • 2020-07-15
  • 1970-01-01
相关资源
最近更新 更多