최대 절전 모드와 Postgres에 문제가 있습니다. 모든 것이 제대로 작동하는지 테스트하기 위해 코드 블록을 반복합니다. 그러나이 코드 블록에는 두 개의 사용자 계정을 useraccount 테이블에 유지하기위한 반복적 인 지속성 메소드가 포함되어 있습니다. 그것은 처음 제대로 작동합니다. 그러나 이후에 코드를 실행하면 UserAccount 개체 ID가 증가하고 테이블의 해당 사용자는 원래 값을 유지합니다. 나는 발전기 클래스로 native
과 identity
을 사용하려고 시도했다. 은 0
에 ID를 유지하고 native
은 위에서 설명한 것과 동일한 문제를 가지고있다.Hibernate와 PostgreSQL 자동 증가가 동기화되지 않습니다.
이 코드는 비현실적인 환경 (동일한 코드 블록을 통해 반복)을 실현하지만 필연적으로이 기능을 수행하지는 않습니다. 실제로 모든 테이블에서 모든 항목을 제거한 후 사용자는 사용자 테이블에 제대로 추가됩니다. 그가 객체 ID가 테이블 ID와 동기화되는지 확인하는 방법이 있습니까?
다음은 useraccount ID에 대한 xml 매핑입니다. 포스트 그레스는 기본적으로 IDENTITY 열을 지원하지 않기 때문에 여기
<class name="UserAccount" table="useraccounts">
<id name = "UserId" type="int" column="user_id" unsaved-value="null">
<generator class="increment"/>
</id>
그리고는, 최대 절전 모드 설정 파일
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">
org.hibernate.dialect.PostgreSQL82Dialect
</property>
<property name="hibernate.connection.driver_class">
org.postgresql.Driver
</property>
<property name="hibernate.connection.url">
jdbc:postgresql://localhost:5432/agora-db
</property>
<property name="hibernate.connection.username">
postgres
</property>
<property name="hibernate.connection.password">
postgres
</property>
<property name="connection_pool_size">1</property>
<property name="hbm2ddl.auto">create</property>
<property name="show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="hibernate.hbm.xml"/>
</session-factory>
</hibernate-configuration>
참고 :이 genearaaly 애플리케이션 로그인에 대한 포스트 그레스 수퍼 유저를 사용하는 것은 좋지 않습니다. 그 대신 특수한 역할을하는 것이 좋습니다. – joop
의미가 있습니다. 나는 이것을 디버그 목적으로 만 사용하고있다. 감사! – dboshardy