使用更改的主键更新(在MySQL数据库中)Java对象
如果标题有误导性,我很抱歉 我有表示数据库条目的对象,我使用反射和注释自动从数据库检索/保存这些对象。我现在想知道如何处理对对象主键的更改。问题是,最初的“价值观”现在没有被记住 例如:使用更改的主键更新(在MySQL数据库中)Java对象,java,mysql,reflection,Java,Mysql,Reflection,如果标题有误导性,我很抱歉 我有表示数据库条目的对象,我使用反射和注释自动从数据库检索/保存这些对象。我现在想知道如何处理对对象主键的更改。问题是,最初的“价值观”现在没有被记住 例如: @DbClass(tableName="category") public class Category { @DbField(name="caregory_name", isPrimaryKey = true) public String categoryName; @DbFiel
@DbClass(tableName="category")
public class Category {
@DbField(name="caregory_name", isPrimaryKey = true)
public String categoryName;
@DbField(name="a_value", isPrimaryKey = false)
public Double aValue;
}
然后,像DatbaseOperations.sotreObject(Category.class,aCategoryInstance)
这样的函数尝试创建适当的准备语句,并基于注释存储(更新)对象
但如果我更改categoryName字段,我将无法创建正确的sql语句(
updatecategory SET WHERE categoryName=…
您的字段是静态的。我真的认为您不希望这样。是的,这是一个错误。感谢您指出这一点。是否有特定的原因让您自己做这一切而不使用JPA?1.您正在重新创建JPA。不要。2.主键值为什么会更改?它们不应该更改。永远不会。是的,de有限。主键不应该是功能性的,而应该是技术性的。记住,其他表将有外键指向您的类别表。如果主键值可以更改,您计划如何处理这些外键?此外,您还将有书签URL和类似引用PK的内容。您不希望在在你的类别名称中输入一个拼写错误。技术PKs也会更有效。
public interface HasOriginal {
public Object original = null;
}