私はクンデラの新人です。私のユースケースは Kundera と MySQL です。春の CrudRepository を使用してエンティティを保存しています。そのエンティティの ID は自動生成されます。Kundera はそのオブジェクトを DB に正常に保存しています。しかし、間違ったIDを返します。その Id を使用して DB からデータを検索すると、null が返されます。
足りないものがあれば教えてください。
エンティティ クラス:
@Entity
@Table(name = "REQUEST_DETAILS")
public class RequestDetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
protected long id;
@Column(name = "REQUEST_STATUS", nullable = false)
private String requestStatus;
// getter setter
}
メインクラス:
public class Main {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:/spring/jpa-config.xml");
RequestDetailsRepository repository = context.getBean(RequestDetailsRepository.class);
RequestDetails requestDetails = new RequestDetails();
requestDetails.setRequestStatus("STARTED");
RequestDetails updatedRequest = repository.save(requestDetails);
System.out.println("request id : " + updatedRequest.getId()); // returning wrong ID (probably hashcode of that object)
// Do some operation
RequestDetails details = repository.findOne(updatedRequest.getId()); // returning NULL
}
CRUD リポジトリ:
public interface RequestDetailsRepository extends org.springframework.data.repository.CrudRepository<RequestDetails, Long> {
}
jpa-config.xml :
<beans>
<context:component-scan base-package="com.example.project" />
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="persistenceUnit"/>
</bean>
<jpa:repositories base-package="com.example.project.repository"/>
</beans>
Persistence.xml :
<persistence>
<persistence-unit name="persistenceUnit">
<provider>com.impetus.kundera.KunderaPersistence</provider>
<properties>
<property name="kundera.client.lookup.class" value="com.impetus.client.rdbms.RDBMSClientFactory" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2008Dialect" />
<property name="hibernate.connection.driver_class" value="net.sourceforge.jtds.jdbc.Driver" />
<property name="hibernate.connection.url"
value="jdbc:jtds:sqlserver://10.127.127.215:1433;databaseName=myDB" />
<property name="hibernate.connection.username" value="user" />
<property name="hibernate.connection.password" value="password" />
<property name="hibernate.current_session_context_class"
value="org.hibernate.context.ThreadLocalSessionContext" />
</properties>
</persistence-unit>
</persistence>