Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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
Java 更改Naturald参数的名称后出错_Java_Database_Hibernate_Rename_Liquibase - Fatal编程技术网

Java 更改Naturald参数的名称后出错

Java 更改Naturald参数的名称后出错,java,database,hibernate,rename,liquibase,Java,Database,Hibernate,Rename,Liquibase,我已使用liquibase更改了自然主义列名(从“名称”更改为“查询名称”): 它工作正常,名称已更改。。。我还用java更新了实体类: @Entity @Table( name = "pm_dbqueries", uniqueConstraints = { @UniqueConstraint(columnNames = "id"), @UniqueConstraint(columnN

我已使用liquibase更改了自然主义列名(从“名称”更改为“查询名称”):


它工作正常,名称已更改。。。我还用java更新了实体类:

@Entity
@Table( name = "pm_dbqueries", uniqueConstraints = { @UniqueConstraint(columnNames = "id"),
                                                      @UniqueConstraint(columnNames = "query_name") } )
@SequenceGenerator( name = "pm_dbqueries_seq", sequenceName = "pm_dbqueries_seq" )
public class DBQuery
{   
    @Id
    @GeneratedValue( strategy = GenerationType.AUTO, generator = "pm_dbqueries_seq" )
    @Column(name = "id", unique = true, nullable = false)
    private Long id;

    @NaturalId
    @Column(name = "query_name", unique = true, nullable = false, length = 40)
    private String queryName;

    @Column(name = "query", unique = false, nullable = false, length = 4000)
    private String query;

    public Long getId()
    {
        return id;
    }

    public void setId( Long id )
    {
        this.id = id;
    }

    public String getQueryName()
    {
        return queryName;
    }

    public void setQueryName( String queryName )
    {
        this.queryName = queryName;
    }

    public String getQuery()
    {
        return query;
    }

    public void setQuery( String query )
    {
        this.query = query;
    }
}
但问题是。。。当我尝试执行此操作时:

return (DBQuery) sessionFactory.getCurrentSession().byNaturalId(DBQuery.class).using( "query_name", name ).load();
出现以下错误:

org.hibernate.hibernateeexception:未为自然id属性XXX.DBQuery#queryName指定值
位于org.hibernate.event.spi.ResolveNaturalIdEvent.(ResolveNaturalIdEvent.java:102)
位于org.hibernate.event.spi.ResolveNaturalIdEvent.(ResolveNaturalIdEvent.java:52)
位于org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.ResolvedNaturalid(SessionImpl.java:2466)
位于org.hibernate.internal.SessionImpl$naturadloadaccessimpl.load(SessionImpl.java:2581)

在这些变化之前,它运行良好。有什么建议吗?

尝试一下,因为这里需要使用属性名而不是列名。它工作得更早,因为两者之间没有区别(name==name)


请不要对不应在浏览器中运行的代码使用代码段。请使用一个普通的代码块。@ Selic请考虑接受我的答案,如果它解决了你的问题。谢谢@Cerburs感谢您指出这一点-到目前为止我还不知道这一点,但这当然是有道理的。请不要将代码片段用于不应该在浏览器中运行的代码。请改用普通代码块。
return (DBQuery) sessionFactory.getCurrentSession().byNaturalId(DBQuery.class).using( "queryName", name ).load();