Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用更改的主键更新(在MySQL数据库中)Java对象_Java_Mysql_Reflection - Fatal编程技术网

使用更改的主键更新(在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;
}