Mic*_*213 3 java hibernate javafx
假设我们Entity/Class想要在JavaFX组件中的TableView中填充一个Person.
我应该在什么类型的数据中填充Person类 - String或者SimpleStringProperty?
在这两种情况下,我都没有完全得到我想要的东西.如果我将使用String变量,我将无法收听在TableView中完成的任何更改(根据postClickMe).另一方面,如果我将使用SimpleStringProperty我将得到和异常,hibernate无法转换SimpleStringProperty为String,这是在数据库中使用的类型.怎么能更巧妙地完成呢?
@Entity
public Person {
private String name; // or SimpleStringProperty
private String Surname; // or SimpleStringProperty
// getter and setters removed to simplify example
}
Run Code Online (Sandbox Code Playgroud)
使用a 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...
}
Run Code Online (Sandbox Code Playgroud)
有关完整的讨论,请参见http://svanimpe.be/blog/properties-jpa.html.
| 归档时间: |
|
| 查看次数: |
444 次 |
| 最近记录: |