jaxb を使用して xml ドキュメントを解析し、JPA を使用してデータベースに挿入するアプリケーションを作成しました。
3 つの JPA エンティティがあります。
1.ItemEntity 2.PromotionEntity 3.SellPriceEntity
item エンティティは、PromotionEntity と 1 対 1 の関係を持ち、SellPrice エンティティと 1 対 1 の関係を持ちます。
ItemEntity のみを使用してデータベースに挿入しようとすると、アプリケーションが機能し、アイテム レコードがデータベースに挿入されます。ただし、ItemEntity、PromotionEntity、および SellPriceEntity を使用してデータベースに挿入しようとすると、エラーが発生し始めます。
org.apache.openjpa.persistence.PersistenceException: 不正な整数値: '\xAC\xED\x00\x05sr\x00,org.apache.camel.example.etl.PromotionEntity$\x0C\xF5\xF1\x08\x0B\xA2 \x81\x02\x00\x05L\x00\x02idt\x00\x10' 行 1 の列 'PROMOTION_ID' {prepstmnt 1554452939 INSERT INTO item (id、ATTRIBUTE_1、ATTRIBUTE_3、ATTRIBUTE_2、BRAND_LOGO_FILE_NAME、BRAND_NAME、CLASS_NO、DEFAULT_MARGIN、DESCRIPTION extended_description、extended_description_2、gst_code、image_file_name、item_no、out_of_stock_ind、pack_qty、promions_id、sell_price_id、selling_unit、size_applable、stock_available、spplr_no、bolume、web_gdescripation、web_descripation、web_color_descripation、web_ged、web_gedescripution ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)} [code= 1366、状態 = HY000] 失敗したオブジェクト: org.apache.camel。example.etl.ItemEntity@333f8b4c
これがエンティティBeanの設定方法です...
@Entity(name = "item")
public class ItemEntity implements java.io.Serializable {
private static final long serialVersionUID = -9063279672222036437L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "ITEM_NO")
private String itemNo;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="PROMOTION_ID")
private PromotionEntity promotion;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="SELL_PRICE_ID")
private SellPriceEntity sellPrice;
gets and sets...
推進団体
@Entity(name = "promotion")
public class PromotionEntity implements java.io.Serializable {
private static final long serialVersionUID = 2597721500656837249L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "PROMOTION_ID")
private String promotionId;
@Column(name = "PROMOTION_PRICE")
private String promotionPrice;
gets and sets...
売値エンティティ
@Entity(name = "sell_price")
public class SellPriceEntity implements java.io.Serializable {
private static final long serialVersionUID = -205334787672950850L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "SELL_PRICE_EFFECTIVE_DATE_1")
private String sellPriceEffectiveDateOne;
@Column(name = "SELL_PRICE_1")
private String sellPriceOne;
gets and sets...
関係フィールドを適切に定義したと信じているので、何が問題なのかわかりません。JDBCStoreManager クラスを介してデバッグしようとすると、実行されている SQL が....
com.mysql.jdbc.JDBC4PreparedStatement@6d66cc49:
INSERT INTO item (
id,
ATTRIBUTE_1,
ATTRIBUTE_3,
ATTRIBUTE_2,
BRAND_LOGO_FILE_NAME,
BRAND_NAME,
CLASS_NO,
DEFAULT_MARGIN,
DESCRIPTION,
EXTENDED_DESCRIPTION,
EXTENDED_DESCRIPTION_2,
GST_CODE, I
MAGE_FILE_NAME,
ITEM_NO,
OUT_OF_STOCK_IND,
PACK_QTY,
PROMOTION_ID,
SELL_PRICE_ID,
SELLING_UNIT,
SIZE_APPLICABLE,
STOCK_AVAILABLE,
SPPLR_NO,
VOLUME,
WEB_AGE_GROUP,
WEB_COLOR_DESCRIPTION,
WEB_DESCRIPTION,
WEB_SIZE_DESCRIPTION,
WEIGHT)
VALUES (701, '', '', '', '', '', '350', '.00', 'KHOMBU APFOOTA KOKO HIGH', '', '', '1', '', '93501250080', 'Y', '0', ** STREAM DATA **, ** STREAM DATA **, 'Each', 'Y', '0', 'KHOMBU', '.0000', '', 'Black', '', '8', '.00')
Promotion_id と Sell_price_id を挿入する必要がある場所に、** STREAM DATA ** と表示されます。そうですか?多分これがデータ型エラーが発生する理由です。
ありがとう